什么是自动实现的属性的自动变量名称

时间:2011-09-27 17:03:46

标签: c#

我正在尝试这样做:

public string LangofUser 
    { 
       get 
       { 
          return string.IsNullOrEmpty("how to get value?") ? "English" : "how to get value?"; 
       } 
       set; 
     }

我必须这样做吗?

string _LangofUser
public string LangofUser 
     { 
       get 
       { 
         return string.IsNullOrEmpty(_LangofUser) ? "English" : _LangofUser; 
       } 
       set { _LangofUser = value};
     }

5 个答案:

答案 0 :(得分:11)

无法在C#中混合使用自动实现和非自动实现的属性。财产必须完全自动实施或属于普通财产。

注意:即使使用完全自动实现的属性,也无法以强类型方式从C#源引用支持字段。它可以通过反射,但这取决于编译器的实现细节。

答案 1 :(得分:3)

正如其他人所说,不要试图混合自动和常规属性。只需写一个普通的房产。

如果你想知道我们在幕后为隐藏的编译器魔法生成了什么秘密名称,请参阅

Where to learn about VS debugger 'magic names'

但不要依赖于此;它可以随时随地改变。

答案 2 :(得分:0)

如果您提供自己的属性实现,则不再是自动的。所以是的,你需要创建实例。

答案 3 :(得分:0)

答案 4 :(得分:0)

如果你想保留自动属性并且仍然有默认值,为什么不在构造函数中初始化它呢?

public class MyClass
{
    public MyClass() { LangOfUser = "English"; }
    public string LangOfUser { get; set; }
}