我无法在方法中获取/设置静态变量。我该怎么做?
public class LoginDialog
{
// class members
private static string _user="" ;
public void RunDialog()
{
_user = "Peter";
}
public static string _User { get; set; }
}
阅读完答案后,我编辑了代码,但仍然无法获得静态变量_user。我做错了什么?
public class LoginDialog
{
private static string _user;
public void RunDialog()
{
LoginDialog._user = "Peter";
}
public static string _User { get {return _user;} }
}
当我声明一切正常时,我想在方法中声明。
private static string _user="Peter";
答案 0 :(得分:9)
问题是你正在设置一个私有静态字段,然后可能是在别处读取公共静态属性。在您的代码中,public static属性完全独立于私有静态字段。
试试这个:
public class LoginDialog
{
// class members
public void RunDialog()
{
_User = "Peter";
}
public static string _User { get; private set; }
}
属性_User
创建自己的不可见私有支持字段,这就是它与您在其他地方声明的私有_user
字段完全分开的原因。
(样式指南规定了公共静态属性的名称User
,但这只是一个指导原则。)
这是另一种方法,对于不支持自动属性的早期版本的C#,以及公共属性名称中没有下划线:
public class LoginDialog
{
private static string _user;
// class members
public void RunDialog()
{
_user = "Peter";
}
public static string User { get { return _user; } }
}