返回解析的十进制的方法不编译

Rhs*_*Rhs 2 c#

我想知道这个代码块无法编译的原因.

public decimal? GetDecimalValue(String decimalString)
{
    return decimalString.IsNullOrWhiteSpace() ? null : decimal.Parse(decimalString);
}
Run Code Online (Sandbox Code Playgroud)

错误信息: Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and 'decimal'

但是,如果我写出三元语句,那么它就可以了.

public decimal? GetDecimalValueThisOneCompiles(String decimalString)
{
    if(decimalString.IsNullOrWhiteSpace()) return null;
    return decimal.Parse(decimalString);
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 5

你必须转换nulldecimal?,你必须传递decimalStringdecimal.Parse,而不是string关键字:

public decimal? GetDecimalValue(String decimalString)
{
    return String.IsNullOrWhiteSpace(decimalString) ? (decimal?)null : decimal.Parse(decimalString);
}
Run Code Online (Sandbox Code Playgroud)

  • 错字对我而言.意思是说decimalString但是是的,将null转换为可空的十进制解决了这个问题.我仍然认为将null转换为可空类型很奇怪. (2认同)