2011-09-27 113 views
4

我试图做到这一点的自动变量名:什么是自动实现的属性

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}; 
    } 
+1

你必须这样做第二种方法。第一个是不可能的。 –

+1

“什么是自动实现的属性的自动变量名称”后台字段是匿名的。这意味着它没有名字。 – BoltClock

+0

可能重复[C#属性:如何使用自定义设置属性没有私人领域?](http://stackoverflow.com/questions/4833635/c-sharp-properties-how-to-use-custom-set-property-没有私人领域) – nawfal

回答

11

在C#中自动实现和未自动实现的属性的混合是不可能的。属性必须完全自动实现或属性正常。

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

+0

感谢您的这些信息:-) – Fredou

0

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

3

正如其他人说,不要尝试混合自动和经常性。只要写一个常规的财产。

如果你想知道我们生成的幕后隐藏编译落后魔术的秘密是什么名字,看到

Where to learn about VS debugger 'magic names'

但不依赖于;它可以随时改变我们的心血来潮。

0

如果你想保持自动属性,并仍然有一个默认值,为什么你不初始化它在你的构造函数?

public class MyClass 
{ 
    public MyClass() { LangOfUser = "English"; } 
    public string LangOfUser { get; set; } 
} 
相关问题