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的预处理程序指令
DEBUG
Robert 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
物业的RismoGetValueOrDefault
John Sheehan的方法
提示与技巧
- Andreas HR Nilsson为事件处理程序提供了一种不错的方法
- John的大写比较
- 访问匿名类型而无需dp的反映
- Will延迟实例化集合属性的快速方法
- roosteronacid的类似于JavaScript的匿名内联函数
其他
- netmodules由kokos
- LINQBridge,邓肯·斯马特(Duncan Smart)
- 并行扩展由乔尔Coehoorn