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

本文关键字:设置 静态 变量 声明 内部 方法 | 更新日期: 2023-09-27 18:29:05

我无法在方法中获取/设置静态变量。我该怎么做?

    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";

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

问题是您设置了一个私有静态字段,然后可能在其他地方读取公共静态属性。在代码中,公共静态属性完全独立于私有静态字段。

试试这个:

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