时间:2019-08-17 13:58:52 作者:无名 浏览量:41
7)nameof Expression ——C#6
新出来的nameof-expression可能看起来不重要,但它真的有它的价值。当使用自动重构因子工具(如ReSharper)时,你有时需要通过名称引用方法参数:
publicvoidPrintUserName(UsercurrentUser){ //The refactoring tool might miss the textual reference to current user belowifwe're renaming it if(currentUser == null) _logger.Error("Argument currentUser is not provided"); //...}
你应该这样使用它…
public void PrintUserName(User currentUser){ //The refactoring tool will not miss this... if(currentUser ==null) _logger.Error($"Argument {nameof(currentUser)} is not provided"); //...}
阅读更多有关nameof-expression的信息,请访问:https://msdn.microsoft.com/en-us/library/dn986596.aspx
8)属性初始化器 ——C#6
属性初始化器允许你声明属性的初始值:
publicclass User{ publicGuidId{get; } =Guid.NewGuid(); // ...}
使用属性初始化器的一个好处是你不能声明一个集合:嗯,因此使得属性不可变。属性初始化器与C#6主要构造函数语法一起工作。
9)as和is 运算符欧洲五大联赛即将开始!
is 运算符用于控制实例是否是特定类型,例如,如果你想看看是否可能转换:
if(PersonisAdult){ //do stuff}
使用as运算符尝试将实例转换为类。如果不能转换,它将返回null:
SomeType y = xasSomeType;if(y !=null){ //do stuff}10)yield 关键字
yield 关键字允许提供带有条目的IEnumerable接口。 以下示例将返回每个2的幂,幂指数从2到8(例如,2,4,8,16,32,64,128,256):
public static IEnumerable Power(int number,int exponent){ intresult =1; for(inti =0; i < exponent; i++) { result = result * number; yieldreturnresult; }}
yield返回可以非常强大,如果它用于正确方式的话。 它使你能够懒惰地生成一系列对象,即,系统不必枚举整个集合——它就会按需完成。