请查看以下代码,并帮我理解为什么会出现编译器错误。
我应该理解为 null 条件语句只用于访问属性、变量等,而不用于赋值吗?
注:我参考了一个类似的帖子(下面链接),但我认为讨论不够充分。 为什么 C# 6.0 在使用 Null 传播运算符时不允许设置非空可空结构的属性? 编辑: 我期望得到的是这样的:
class Program
{
static void Main(string[] args)
{
Sample smpl = GetSampleObjectFromSomeClass();
//Compiler Error -- the left-hand side of an assignment must be a variable property or indexer
smpl?.isExtended = true;
}
}
public class Sample
{
public bool isExtended { get; set; }
}
我应该理解为 null 条件语句只用于访问属性、变量等,而不用于赋值吗?
注:我参考了一个类似的帖子(下面链接),但我认为讨论不够充分。 为什么 C# 6.0 在使用 Null 传播运算符时不允许设置非空可空结构的属性? 编辑: 我期望得到的是这样的:
If(null!= smpl)
{
smpl.isExtended = true;
}
看起来我的期望不太正确!
smpl?.set_isExtended(true);
这将是完全有效的代码。 - Andrew Hanlon