where T : struct
我们C#开发人员都知道C#的基础知识。我的意思是声明,条件,循环,运算符等。
我们中有些人甚至掌握了泛型,匿名类型,lambdas,LINQ等...
但是,即使C#爱好者,成瘾者,专家也几乎不知道C#最隐藏的功能或技巧是什么?
到目前为止,这里是一些揭示的功能:
关键词
yield通过迈克尔·斯托姆var通过迈克尔·斯托姆using()科科斯的声明readonly由kokosas由Mike Stoneas/ 埃德·斯旺格is(Ed Swangren)as/is(由Rocketpants改进)default通过鼠的死亡global::通过pzycomanusing()由块AlexCusevolatile由的JakubŠturcextern alias由的JakubŠturc
属性
DefaultValueAttribute通过迈克尔·斯托姆ObsoleteAttribute由DannySmurfDebuggerDisplayAttribute由StuDebuggerBrowsable并DebuggerStepThrough通过bdukesThreadStaticAttribute通过marxidadFlagsAttribute马丁·克拉克(Martin Clarke)ConditionalAttribute由AndrewBurns
句法
??(coalesce null)运算符by kokos- Nick Berardi的举报
where T:new由LarsMæhlum- Keith的隐式泛型
- Keith的一参数lambda
- Keith的汽车属性
- Keith的命名空间别名
- 逐字字符串文字,带@ by Patrick
enum通过数值lfoust- @variablenames由marxidad
event运算符by marxidad- 通过波特曼格式化字符串括号
- xanadont的属性访问器可访问性修改器
- JasonS的条件(三元)运算符(
?:) checked和unchecked运营商Binoj Antonyimplicit and explicit运营商Flory
语言功能
- 布拉德·巴克的可空类型
- Keith的匿名类型
__makeref __reftype __refvalue通过Judah Himango- lomaxx的对象初始化程序
- David在Dakota中格式化字符串
- marxidad的扩展方法
partial乔恩·埃里克森(Jon Erickson)的方法- John Asbeck的预处理程序指令
DEBUGRobert Durgin的预处理程序指令- SefBkn的运算符重载
- 通过chakrit键入推断
- 布尔运算符带到一个新的水平由罗布·高夫
- 将值类型变量作为接口传递,无需Roman Boiko进行装箱
- 以编程方式确定Roman Boiko声明的变量类型
- 克里斯的静态构造函数
- 借助公鸡油酸使用LINQ,更容易在眼睛上/浓缩ORM映射
__arglist由扎克保龄球
Visual Studio功能
- 通过Himadri在编辑器中选择文本块
- 通过片段DannySmurf
构架
TransactionScope通过KiwiBastardDependantTransaction通过KiwiBastardNullable<T>由IainMHMutex通过DiagoSystem.IO.Path通过ageektrappedWeakReference通过Juan Manuel
方法和性质
String.IsNullOrEmpty()KiwiBastard的方法List.ForEach()KiwiBastard的方法BeginInvoke(),Will Dean的EndInvoke()方法Nullable<T>.HasValue和Nullable<T>.Value物业的RismoGetValueOrDefaultJohn Sheehan的方法
提示与技巧
- Andreas HR Nilsson为事件处理程序提供了一种不错的方法
- John的大写比较
- 访问匿名类型而无需dp的反映
- Will延迟实例化集合属性的快速方法
- roosteronacid的类似于JavaScript的匿名内联函数
其他
- netmodules由kokos
- LINQBridge,邓肯·斯马特(Duncan Smart)
- 并行扩展由乔尔Coehoorn