空条件,后跟点运算符C#

时间:2019-04-25 21:52:34

标签: c#

在使用空条件运算符.之后使用?.操作符安全吗?

string x = MaybeReturnsNullMethod();
string y = x?.Substring(2).PadRight(1);

我认为第2行的正确代码是为了避免可能的NullReferenceException

string y = x?.Substring(2)?.PadRight(1);

1 个答案:

答案 0 :(得分:0)

x?.SomeMethod().ToString()null时,表达式x将返回null。这是由于称为 null propogation 的C#行为引起的。

  

即使通过空条件运算符调用了子字符串,并且   空值?子字符串看似会返回空值,即语言   行为可以满足您的要求。它将呼叫短路并   立即返回null,避免了将   否则会导致NullReferenceException。这是一个已知的概念   作为零传播。

它可以正常工作。