自动属性已添加到.net 3中的语言中,无论如何,使用代码创建“私有”字段:
public string foo {get;set;}
是否可以实际获得对此私有字段的任何引用?
我想做点什么
public string foo {get{/*some code to check foo for nulls etc*/};set;}
不丢失此自动属性功能并编写类似
的内容private string _foo = null;
public string foo{get{_foo==null?_foo="hello"; return _foo;}set{_foo=value;}}
答案 0 :(得分:6)
The backing field of an automatic property is anonymous;你无法从其getter或setter中访问它。
如果您需要在getter或setter中实现自己的逻辑,那么无论如何都不会将您的属性视为自动。
自动属性只是为了节省打字的单调乏味,以及观看的大部分内容:
private object _x;
public object X
{
get { return _x; }
set { _x = value; }
}
答案 1 :(得分:3)
您不能拥有“自动”获取和“手动”设置(或“手动”获取“自动”设置)。您必须同时具有“手动”或两者都是“自动”。