我知道自动属性必须定义一个 get 和 set 访问器方法,我也知道这些访问器中的任何一个都可以通过访问修饰符变得不可见。
编译器是否满意的技术原因
public object Property { get; set; }
但不是
public object Property { get; }
我对这段代码的(可能是错误的)理解是编译器生成了一个对调用代码隐藏的支持字段,如下所示:
private object hiddenField; //hidden by compiler.
public object Property
{
get { return hiddenField; }
set { hiddenField = value;}
}
如果编译器可以生成它,是否有理由根据属性声明中设置器的存在(或缺少)来省略设置访问器函数。
我知道这可能是功能范围问题而不是技术限制,我也坦率地承认我还没有参考 C# 语言规范。
[更新 2 ]
原谅我......我是个白痴:P,我现在明白了,谢谢大家容忍我的高级时刻/