我正在尝试这样做:
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};
}
答案 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; }
}