สิ่งนี้อยู่ในใจของฉันหลังจากฉันเรียนรู้จากคำถามนี้ :
where T : struct
พวกเราผู้พัฒนา C # ทุกคนรู้พื้นฐานของ C # ฉันหมายถึงการประกาศเงื่อนไขเงื่อนไขลูปตัวดำเนินการ ฯลฯ
พวกเราบางคนเข้าใจสิ่งต่าง ๆ เช่นGenerics , ประเภทนิรนาม , lambdas , LINQ , ...
แต่คุณสมบัติหรือลูกเล่นที่ซ่อนอยู่ของ C # ที่แม้แต่แฟน C #, ผู้ติดยา, ผู้เชี่ยวชาญแทบจะไม่รู้คืออะไร?
นี่คือคุณสมบัติที่เปิดเผยแล้ว:
คำสำคัญ
yieldโดยMichael StumvarโดยMichael Stumusing()คำสั่งโดยkokosreadonlyโดยkokosasโดยMike Stoneas/isโดยEd Swangrenas/is(ปรับปรุง) โดยRocketpantsdefaultโดยDeathofratsglobal::โดยpzycomanusing()บล็อกโดยAlexCusevolatileโดยJakub Šturcextern aliasโดยJakub Šturc
คุณลักษณะ
DefaultValueAttributeโดยMichael StumObsoleteAttributeโดยDannySmurfDebuggerDisplayAttributeโดยStuDebuggerBrowsableและDebuggerStepThroughโดยbdukesThreadStaticAttributeโดยmarxidadFlagsAttributeโดยMartin ClarkeConditionalAttributeโดยAndrewBurns
วากยสัมพันธ์
??(รวมตัวกันเป็นโมฆะ ) โอเปอเรเตอร์โดยkokos- การตีธงหมายเลขโดยNick Berardi
where T:newโดยLars Mæhlum- ข้อมูลทั่วไปโดยนัยโดยKeith
- lambdas หนึ่งพารามิเตอร์โดยKeith
- คุณสมบัติอัตโนมัติโดยKeith
- นามแฝง Namespace โดยKeith
- ตัวอักษรของคำต่อท้ายสตริงด้วย @ โดยPatrick
enumค่าโดยlfoust- @variablenames โดยmarxidad
eventผู้ประกอบการโดยmarxidad- จัดรูปแบบวงเล็บสตริงโดยPortman
- ตัวดัดแปลงการเข้าถึงการเข้าถึงคุณสมบัติโดยxanadont
- ผู้ประกอบการ
?:ตามเงื่อนไข (ที่ประกอบไปด้วย) ( ) โดยJasonS checkedและuncheckedผู้ประกอบการโดยBinoj Antonyimplicit and explicitผู้ประกอบการโดยFlory
คุณสมบัติทางภาษา
- ประเภทที่ทำให้เป็นโมฆะโดยแบรดบาร์เกอร์
- ประเภทที่ไม่ระบุตัวตนโดยKeith
__makeref __reftype __refvalueโดยยูดาห์ Himango- วัตถุ initializers โดยlomaxx
- จัดรูปแบบสตริงโดยDavid ในดาโคตา
- วิธีการขยายโดยmarxidad
partialวิธีการโดยJon Erickson- คำสั่งของผู้ประมวลผลล่วงหน้าโดยJohn Asbeck
DEBUGคำสั่งประมวลผลล่วงหน้าโดยRobert Durgin- ผู้ประกอบการมากไปโดยSefBkn
- พิมพ์ inferrence โดยชาคริต
- ตัวดำเนินการบูลีนนำไปสู่อีกระดับโดยRob Gough
- ผ่านตัวแปรประเภทค่าเป็นส่วนต่อประสานที่ไม่มีมวยโดยRoman Boiko
- โปรแกรมกำหนดประเภทตัวแปรที่ประกาศโดยRoman Boiko
- ตัวสร้างแบบคงที่โดยChris
- การทำแผนที่ ORM แบบย่อที่ง่ายขึ้นโดยใช้ LINQ โดยroosteronacid
__arglistโดยZac Bowling
คุณสมบัติของ Visual Studio
- เลือกบล็อคข้อความในโปรแกรมแก้ไขโดยHimadri
- ตัวอย่างโดยDannySmurf
กรอบ
TransactionScopeโดยKiwiBastardDependantTransactionโดยKiwiBastardNullable<T>โดยIainMHMutexโดยDiagoSystem.IO.PathโดยageektrappedWeakReferenceโดยJuan Manuel
วิธีการและคุณสมบัติ
String.IsNullOrEmpty()วิธีการโดยKiwiBastardList.ForEach()วิธีการโดยKiwiBastardBeginInvoke(),EndInvoke()วิธีการโดยจะคณบดีNullable<T>.HasValueและNullable<T>.ValueคุณสมบัติโดยRismoGetValueOrDefaultวิธีการโดยJohn Sheehan
เคล็ดลับ & เทคนิค
- วิธีการที่ดีสำหรับตัวจัดการเหตุการณ์โดยAndreas HR Nilsson
- การเปรียบเทียบตัวพิมพ์ใหญ่โดยJohn
- เข้าถึงประเภทที่ไม่ระบุตัวตนโดยไม่มีการสะท้อนกลับโดยdp
- วิธีที่รวดเร็วในการยกตัวอย่างคุณสมบัติการรวบรวมโดยWill
- ฟังก์ชั่นอินไลน์แบบไม่ระบุชื่อเหมือน JavaScript โดยroosteronacid
อื่น ๆ
- netmodules โดยkokos
- LINQBridgeโดยDuncan Smart
- ส่วนขยายแบบขนานโดยJoel Coehoorn