如何在方法中声明/设置静态变量

时间:2012-03-26 14:05:49

标签: 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; }

}

阅读完答案后,我编辑了代码,但仍然无法获得静态变量_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";

1 个答案:

答案 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; } } 
}