三十分钟快速掌握C# 6.0知识点

2019-12-30 16:44:22刘景俊
public bool IsNull(string str) => string.IsNullOrEmpty(str);

总结:该语法糖的目的是使代码变得更简洁,但这个应该是区分使用场景的,如:数学计算(Math类)使用此语法糖的确能够简洁代码提高可读

性,但在某处如果导入过多的类型那么不仅不能提高阅读性反而会增加阅读难度,因为你不知道这些成员具体属于那个类型。还有若类型本身存在同名成员使用时则会使用类型成员覆盖。

注意:使用静态这一语法糖并不适用扩展方法,因为扩展方法的设计理念就是不修改已有代码且只能在一定范围内使用,所以在特殊情况下需要将

其当作静态方法来使用,那么使用类名调用反而是比较明智的。

五、Null条件运算符(Null-conditional operators)

稍有经验的童鞋都知道在Coding过程中经常要判断变量的值是否为null,类似这种if-else的操作还不少。这使得代码看起来十分不简洁,好在C#6中提供了解决方法:


 var student = new Student();
 var firstName = student?.FirstName;

等同于:


var student = new Student();

 string firstName = null;
 if (student != null)
 {
  firstName = student.FirstName;
 }

使用方法:只需替换成员访问符 . 为 ?. ,若 ?. 左边为null则整个运算符的结果也为null,否则运算符的结果就等于其成员值。假如成员的类型为值

类型则整个表达式返回的类型是对应类型的可空类型,如:


 int? age = student?.Age;

原理解析: ?. 编译后就是 if 或 三元运算符,非赋值操作(如:call)会编译成 if,赋值操作一般会编译成三元运算符。

六、字符串插值(String Interpolation)

C# 6中提供了一种新语法来构建格式化字符串,如:


 var fullName = $"{student.FirstName},{student.LastName}";

等同于:


 var fullName = string.Format("{0},{1}", student.FirstName, student.LastName);

使用方法:只需在字符串前加上$符号,然后在大括号中填写表达式(字段、方法、Lambdad...)即可。

备注:

1. 字符串插值语法支持以前所有字符串格式设置,如:


 Console.WriteLine($"平均成绩:{student.GPA:F2}");

注:因为 : 总被编译器解释为表达式与字符串格式的分隔符,所以表达式中若有条件运算符则我们需要用括号来强制编译将其解析成当前语境所要

表达的意义。如:


 Console.WriteLine($"平均成绩:{(student.GPA > 80 ? student.GPA : 0):F2}");