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

C# 空条件后跟点运算符C,c#,C#,使用这台机器安全吗。使用空条件运算符后的运算符 我认为第2行避免可能出现NullReferenceException的正确代码是 string y = x?.Substring(2)?.PadRight(1); 当x为null时,表达式x?.SomeMethod.ToString将返回null。这是由于一个名为的C行为造成的 即使通过null条件运算符调用子字符串,并且 空值?。子字符串似乎可以返回空值,即语言 行为就是你想要的。它会使电话短路,然后 立即返回null,避免了可能导致的编程错误

使用这台机器安全吗。使用空条件运算符后的运算符

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

string y = x?.Substring(2)?.PadRight(1);
当x为null时,表达式x?.SomeMethod.ToString将返回null。这是由于一个名为的C行为造成的

即使通过null条件运算符调用子字符串,并且 空值?。子字符串似乎可以返回空值,即语言 行为就是你想要的。它会使电话短路,然后 立即返回null,避免了可能导致的编程错误 否则将导致NullReferenceException。这是一个众所周知的概念 作为零传播


它只是工作。

旁注:例如,为什么下面的代码打印为真-您完全错过了代码的这一部分。。。并不是说添加这些会使问题变得更好,但可能会节省一些投票的时间…而且在为示例代码选择函数之前,最好先选择字符串。子字符串永远不会返回null…对不起,我应该校对一下。然而,string.Substring从不返回null的批评是无关紧要的。事实上,这段代码是从我的答案中链接到的博客文章中提取出来的。在反复阅读问题几次后,子字符串某种程度上说明了可能需要第二个问号,并与您试图提出的问题一致。。。在阅读MSDN之后,我不会问这个问题:空条件运算符正在短路。如果条件成员访问和索引操作链中的一个操作返回null,则链的其余部分将停止执行。-但也许有人会发现这篇文章很有用。。。
string y = x?.Substring(2)?.PadRight(1);