我想知道这个代码块无法编译的原因.
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)
你必须转换null为decimal?,你必须传递decimalString给decimal.Parse,而不是string关键字:
public decimal? GetDecimalValue(String decimalString)
{
return String.IsNullOrWhiteSpace(decimalString) ? (decimal?)null : decimal.Parse(decimalString);
}
Run Code Online (Sandbox Code Playgroud)