访问自动属性 ​​- c#

时间:2011-03-16 09:56:50

标签: c# properties

自动属性已添加到.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;}}

2 个答案:

答案 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)

您不能拥有“自动”获取和“手动”设置(或“手动”获取“自动”设置)。您必须同时具有“手动”或两者都是“自动”。