如何在空字符串上应用Null-Conditional运算符?

pri*_*kar 0 c# c#-6.0

我有一个字符串值,需要将其转换为十进制.

var str = null;           
decimal number;
decimal d = Decimal.TryParse(str, out number) ? number : 0M;
Run Code Online (Sandbox Code Playgroud)

它工作正常.

现在我试图通过使用C#6.0 的新Null条件运算符来实现相同的功能 .我怎么能这样做?

我知道这是一次错误的尝试.

 var str = null;
 decimal d = str?.Convert.ToDecimal(str);
Run Code Online (Sandbox Code Playgroud)

Gar*_*ill 5

一个空白的(空)字符串不是null,所以你不能使用该操作.

你可以这样做:

decimal d = string.IsNullOrEmpty(str) ? 0M : Convert.ToDecimal(str);
Run Code Online (Sandbox Code Playgroud)

编辑:好的,现在我们开始一个null字符串.在这种情况下...

decimal d = (str == null) ? 0M : Convert.ToDecimal(str);
Run Code Online (Sandbox Code Playgroud)

我仍然不认为这是使用空条件运算符的合适时间,因为当表达式的最终结果可以为null时,这是最有用的 - 在您的情况下不是这样.