问题:
你不断地编写笨拙的if-then 语句来判断一个对象是否为null。你需要一种更简洁、更简单的方式来编写这类代码。
解决方案:
使用C# 6.0 中新引入的null 条件运算符。在过去,通常需要在使用对象前进行检查以确保对象不为null。
if (val != null)
{
val.Trim().ToUpper();
...
}
现在你可以简单地使用null 条件运算符。
val?.Trim().ToUpper();
这一简化的语法判断val 是否为null;如果是,那么将不会调用Trim 和ToUpper 方法,也就不会引发讨厌的NullReferenceException。如果val 不是null, 则将调用Trim 和ToUpper 方法。
在使用点运算符将一系列对象成员访问链到一起时,也可以使用null 条件运算符测试每个对象是否为null。
Person?.Address?.State?.Trim();
在这种情况下,如果前面三个对象(Person、Address 和State)中任何一个为null,点运算符将不再对null 对象进行调用,此表达式的执行也会终止。
null 条件运算符不仅可以用于常规对象,也可以用于数组和索引以及返回的索引元素。例如,如果val 的类型是string[],这行代码将检查val 变量的值是否为null。
val?[0].ToUpper();
然而下面这行