内插字符串($)
实际上是C# 6.0对string.Format的改进,将字符串文本标识为内插字符串($)
根据微软的例子来看:
1 using System; 2 3 public class Example 4 { 5 public static void Main() 6 { 7 string name = "John"; 8 string greeting = $"Hello, {name}!"; 9 Console.WriteLine(greeting); 10 } 11 }
相当于原先的string.Format这种必须使用占位符,极容易出错:
1 string name = "John"; 2 string str = string.Fromat("Hello,{0}!",name);
而使用$则不容易出现错误,可以这样写:
1 string name = "John"; 2 string str = $"Hello,{name}!";
新增语法糖:(?.)
这也是C#6.0的语法,这叫Null-Conditional Operator(null条件运算符)
我们经常需要判断对象是否为null(不判断呢就会报异常System.NullReferenceException之类的),我们一般像这样:
1 List<string> list = null; 2 if (list != null) 3 { 4 string[] strArr = list.ToArray(); 5 }
或者这样:
1 List<string> list = null; 2 string[] strArr = (list != null ? list.ToArray() : null);
使用这个null条件运算符就可以这样简单的完成这件事了
1 List<string> list = null; 2 string[] strArr = list?.ToArray();
解释一下,当 list 为 null 时就不进行后面的ToArray(),返回null,当 list 不为 null 就ToArray();
这里要注意一下,前面strArr这个得是个可null的值
null合并运算符(??)
?? 运算符称作 null 合并运算符。 如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
演示一下:
1 int? num = null;//前面设定了个可空的int,后面想null时变为0就好 2 int num1 = num ?? 0;