ดู "การเขียนโปรแกรมขั้นสูง C# รุ่นที่สี่"
· เหตุผลหนึ่งในการเขียนคอนสตรัคเตอร์แบบคงที่คือคลาสมีฟิลด์หรือคุณสมบัติคงที่ซึ่งจำเป็นต้องเริ่มต้นจากแหล่งภายนอกก่อนที่จะใช้คลาสเป็นครั้งแรก
· ตัวสร้างแบบคงที่จะทำงานมากที่สุดครั้งเดียว ก่อนที่โค้ดจะอ้างอิงถึงคลาส
· ตัวสร้างแบบคงที่ไม่มีตัวดัดแปลงการเข้าถึงและไม่เคยถูกเรียกด้วยโค้ด C# อื่น ๆ ดังนั้นตัวดัดแปลงการเข้าถึงเช่นสาธารณะและส่วนตัวจึงไม่มีความหมาย
· ตัวสร้างแบบคงที่ไม่สามารถรับพารามิเตอร์ใดๆ ได้ และคลาสสามารถมีตัวสร้างแบบคงที่ได้เพียงตัวเดียวเท่านั้น
· ตัวสร้างแบบคงที่สามารถเข้าถึงสมาชิกแบบคงที่ของคลาสเท่านั้น ไม่ใช่สมาชิกอินสแตนซ์
ตัวอย่างได้รับด้านล่าง:
UserPreferences คลาสสาธารณะ
-
สาธารณะคงสี BackColor แบบอ่านอย่างเดียว;
การตั้งค่าผู้ใช้แบบคงที่ ()
-
//อ่าน BackColor จากแหล่งภายนอก;
-
-
-
classMainEntryPoint
-
โมฆะคงที่ Main()
-
Console.WriteLine(UserPreferences.BackColor.ToString());
-
-
โปรดทราบว่าตัวสร้างอินสแตนซ์แบบไม่มีพารามิเตอร์สามารถอยู่ร่วมกับตัวสร้างแบบคงที่ในคลาสได้อย่างปลอดภัย แม้ว่ารายการพารามิเตอร์จะเหมือนกัน แต่ก็ไม่มีความขัดแย้ง เนื่องจากตัวสร้างแบบคงที่จะถูกดำเนินการเมื่อมีการโหลดคลาส และตัวสร้างอินสแตนซ์จะถูกดำเนินการเมื่อมีการสร้างอินสแตนซ์ ดังนั้นจึงไม่มีข้อขัดแย้งในการดำเนินการของตัวสร้าง
คลาส MyTempClass
-
int สาธารณะคงที่ num = 100;
MyTempClass แบบคงที่ ()
-
หมายเลข = 101;
-
-
โปรแกรมชั้นเรียน
-
โมฆะคงที่หลัก (สตริง [] args)
-
int x = MyTempClass.num;
คอนโซล.WriteLine();
-
-
ในโปรแกรมข้างต้น หากไม่ได้เพิ่มตัวสร้างแบบคงที่ ค่าของ x จะเป็น 100 เมื่อเพิ่มตัวสร้างแบบคงที่ ค่าของ x คือ 101