访问自动属性-c#

访问自动属性-c#,c#,properties,C#,Properties,在about.net 3中将自动属性添加到语言中,该语言创建了一个“private”字段,使用以下代码: 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{ge

在about.net 3中将自动属性添加到语言中,该语言创建了一个“private”字段,使用以下代码:

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;}}
);您无法从其getter或setter中访问它

如果您需要在getter或setter中实现自己的逻辑,那么您的属性不再被认为是自动的

自动属性的存在只是为了省去打字的繁琐和视觉上的障碍,其中包括:

private object _x;

public object X
{
    get { return _x; }
    set { _x = value; }
}

您不能有“自动”get和“手动”set(或带有“自动”set的“手动”get)。您必须同时具有“手动”或“自动”。

这不会使其成为自动属性,是吗?为什么要在getter中添加检查?检查应在setter.IMO中。惰性初始化过度使用。如果默认值是checktoconstruct,只需在构造函数中分配它。延迟初始化适用于默认值构造成本高且不总是使用的属性。根据我的经验,这种情况可能是百分之一。