public void PrintUserName(User currentUser){ //The refactoring tool might miss the textual reference to current user below if we'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"); //...}
public class User{ publicGuidId { get; } = Guid.NewGuid(); // ...}
使用属性初始化器的一个好处是你不能声明一个集合:嗯,因此使得属性不可变。
属性初始化器与C#6主要构造函数语法一起工作。
9)as和is 运算符
is 运算符用于控制实例是否是特定类型,例如,如果你想看看是否可能转换:if (PersonisAdult){ //do stuff}使用as运算符尝试将实例转换为类。
如果不能转换,它将返回null:SomeType y = x as SomeType;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){ int result = 1; for (int i = 0; i < exponent; i++) { result = result * number; yieldreturn result; }}
10)yield 关键字
yield 关键字允许提供带有条目的IEnumerable接口。
以下示例将返回每个2的幂,幂指数从2到8(例如,2,4,8,16,32,64,128,256):
public static IEnumerable Power(int number, int exponent){ int result = 1; for (int i = 0; i < exponent; i++) { result = result * number; yieldreturn result; }}