ความหมายของ CTOR คืออะไร?


221

ในไฟล์ C # จำนวนมากฉันบันทึกแท็กภูมิภาค (?) ที่ชื่อ CTOR หรือ ctor ความหมายของ ctor คืออะไร? เหตุใดภูมิภาคจึงเรียกว่า ctor

คำตอบ:


305

มันเป็นแค่ชวเลขสำหรับ "นวกรรมิก" - และมันก็เป็นสิ่งที่เรียกว่านวกรรมิกใน IL เช่นกัน ตัวอย่างเช่นเปิดตัวสะท้อนแสงและดูประเภทแล้วคุณจะเห็นสมาชิกเรียก.ctorสิ่งก่อสร้างต่าง ๆ


3
ทำไมถึงเรียกว่า. นักแสดง อะไรคือความหมายของ (.) จุดที่อยู่ข้างหน้า?
isuruceanu

@ isuruceanu: ฉันสงสัยว่ามันจะแสดงว่าเป็นชื่อที่สงวนไว้ เพียงแค่เดาว่า
Jon Skeet

แล้ว xxx. #. ctor () ล่ะ? มันล้มเหลวในการดำเนินการ FxCop ของฉัน stackoverflow.com/questions/17024149/…
Andreas Blomqvist

8
@ เจสซี: ฉันไม่ค่อยได้ยินมันออกเสียง แต่ฉันจะออกเสียงว่า "ดู - ตอ"
Jon Skeet

5
@isuruceanu ทุกอย่างเริ่มต้นด้วย "." ใน IL คือข้อมูลเมตา
Jude

45

โดยปกติภูมิภาคนี้ควรมีตัวสร้างของคลาส


2
"ควรมี" - นั่นหมายความว่า. นักแสดงไม่จำเป็นต้องอ้างอิงคอนสตรัคเตอร์เสมอไป? หรือเพียงแค่ว่ามันไม่ได้อ้างอิงตัวสร้างของคลาสเสมอ (เพราะมันสามารถอ้างอิง struct ตัวอย่าง)?
cogumel0

@ cogumel0 หรือมากกว่า "ควรมีs " ;-)
Sнаđошƒаӽ

36

หากต้องการขยายเพิ่มเติมอีกเล็กน้อยมีตัวสร้างสองชนิด: initializers อินสแตนซ์ (.ctor), ประเภท initializers (.cctor) สร้างรหัสด้านล่างและสำรวจรหัส IL ใน ildasm.exe คุณจะสังเกตเห็นว่าฟิลด์สแตติก 'b' จะถูกเตรียมใช้งานผ่าน. cctor () ในขณะที่ฟิลด์อินสแตนซ์จะถูกเตรียมใช้งานผ่าน .ctor ()

internal sealed class CtorExplorer
{
   protected int a = 0;
   protected static int b = 0;
}

14

พิมพ์ "ctor" และกดปุ่มTABสองครั้งสิ่งนี้จะเพิ่มตัวสร้างเริ่มต้นโดยอัตโนมัติ


ใน VS2013 (และใช้ R # 2016.1) ฉันต้องกดแท็บหนึ่งครั้งเท่านั้น ไม่แน่ใจเกี่ยวกับ VS / R # เวอร์ชันอื่น
ro͢binmckenzie

13
นี่ไม่ใช่คำตอบสำหรับคำถาม
Malfist

9
ไม่ใช่คำตอบดังนั้น downvoted แต่สิ่งที่น่าสนใจที่ควรรู้ :-)
Sнаđошƒаӽ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.