kmx*_*llo 2 c# methods static get set
我无法在方法中获取/设置静态变量.我该怎么做?
public class LoginDialog
{
// class members
private static string _user="" ;
public void RunDialog()
{
_user = "Peter";
}
public static string _User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
阅读完答案后,我编辑了我的代码,但我仍然无法获得静态变量_user.我做错了什么?
public class LoginDialog
{
private static string _user;
public void RunDialog()
{
LoginDialog._user = "Peter";
}
public static string _User { get {return _user;} }
}
Run Code Online (Sandbox Code Playgroud)
当我声明一切正常时,我宁愿在方法内部声明.
private static string _user="Peter";
Run Code Online (Sandbox Code Playgroud)
问题是你正在设置一个私有静态字段,然后可能是在别处读取公共静态属性.在您的代码中,public static属性完全独立于私有静态字段.
试试这个:
public class LoginDialog
{
// class members
public void RunDialog()
{
_User = "Peter";
}
public static string _User { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
该属性_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; } }
}
Run Code Online (Sandbox Code Playgroud)