在以下代码中,两个变体之一无法编译:
class C
{
public decimal DecimalField;
}
static C GetC() { return new C(); } //Can return null in reality.
C c = GetC(); //Get a C value from somewhere, this might be null
string toString1 = c?.DecimalField?.ToString(); //Does not compile.
string toString2 = (c?.DecimalField)?.ToString(); //Compiles.
错误 CS0023:操作员“?” 不能应用于“十进制”类型的操作数
为什么简单表单无法编译?
表达式c?.DecimalField
不会是 typedecimal?
吗?该值可以为 null,因此?.
应应用运算符。我很确定这是因为在这段代码中:
var decimalValue = c?.DecimalField;
var
确实根据decimal?
IDE解析。