นี่คือรายละเอียดการใช้งานที่ไม่มีเอกสารของคอมไพลเลอร์และอาจมีการเปลี่ยนแปลงได้ตลอดเวลา (อัปเดต: ดูGeneratedNames.cs
ในแหล่งข้อมูล C # สำหรับรายละเอียดปัจจุบันคำอธิบายด้านล่างค่อนข้างล้าสมัย)
อย่างไรก็ตามเนื่องจากฉันเป็นคนดีนี่คือรายละเอียดบางส่วน:
หากคุณมีตัวแปรภายในที่ไม่ได้ใช้ซึ่งเครื่องมือเพิ่มประสิทธิภาพจะลบออกเราจะส่งข้อมูลการดีบักไปยัง PDB เราติดส่วนต่อท้าย__Deleted$
เข้ากับตัวแปรดังกล่าวเพื่อให้ดีบักเกอร์รู้ว่าพวกเขาอยู่ในซอร์สโค้ด แต่ไม่ได้แสดงในไบนารี
สล็อตตัวแปรชั่วคราวที่จัดสรรโดยคอมไพลเลอร์จะได้รับชื่อด้วยรูปแบบ CS $ X $ Y โดยที่ X คือ "ชนิดชั่วคราว" และ Y คือจำนวนจังหวะที่จัดสรรจนถึงตอนนี้ ประเภทชั่วคราว ได้แก่ :
0 --> short lived temporaries
1 --> return value temporaries
2 --> temporaries generated for lock statements
3 --> temporaries generated for using statements
4 --> durable temporaries
5 --> the result of get enumerator in a foreach
6 --> the array storage in a foreach
7 --> the array index storage in a foreach.
ชนิดชั่วคราวระหว่าง 8 ถึง 264 เป็นที่เก็บดัชนีอาร์เรย์เพิ่มเติมสำหรับอาร์เรย์หลายมิติ
ชนิดชั่วคราวที่สูงกว่า 264 ใช้สำหรับชั่วคราวที่เกี่ยวข้องกับคำสั่งคงที่ซึ่งแก้ไขสตริง
ชื่อที่สร้างโดยคอมไพเลอร์พิเศษถูกสร้างขึ้นสำหรับ:
1 --> the iterator state ("state")
2 --> the value of current in an iterator ("current")
3 --> a saved parameter in an iterator
4 --> a hoisted 'this' in an iterator ("this")
5 --> a hoisted local in an iterator
6 --> the hoisted locals from an outer scope
7 --> a hoisted wrapped value ("wrap")
8 --> the closure class instance ("locals")
9 --> the cached delegate instance ("CachedAnonymousMethodDelegate")
a --> the iterator instance ("iterator")
b --> an anonymous method
c --> anonymous method closure class ("DisplayClass")
d --> iterator class
e --> fixed buffer struct ("FixedBuffer")
f --> anonymous type ("AnonymousType")
g --> initializer local ("initLocal")
h --> query expression temporary ("TransparentIdentifier")
i --> anonymous type field ("Field")
j --> anonymous type type parameter ("TPar")
k --> auto prop field ("BackingField")
l --> iterator thread id
m --> iterator finally ("Finally")
n --> fabricated method ("FabricatedMethod")
o --> dynamic container class ("SiteContainer")
p --> dynamic call site ("Site")
q --> dynamic delegate ("SiteDelegate")
r --> com ref call local ("ComRefCallLocal")
s --> lock taken local ("LockTaken")
รูปแบบในการสร้างชื่อวิเศษคือ: P<N>C__SI
โดยที่:
- P คือ CS $ สำหรับผู้รับมอบสิทธิ์ที่แคชไว้และแสดงอินสแตนซ์คลาสว่าง
- N คือชื่อดั้งเดิมที่เกี่ยวข้องกับสิ่งของถ้ามี
- C คืออักขระ 1 ถึง s ที่ระบุไว้ด้านบน
- S คือคำต่อท้ายที่สื่อความหมาย ("ปัจจุบัน" "สถานะ" และอื่น ๆ ) เพื่อที่คุณจะได้ไม่ต้องจำตารางด้านบนเมื่ออ่านข้อมูลเมตา
- ฉันเป็นหมายเลขเฉพาะที่ไม่บังคับ