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

C# 如何在方法内声明/设置静态变量,c#,methods,static,get,set,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; } } 在阅读了答案之后,我编辑了我的代码,

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

    public class LoginDialog
{
    // class members

    private static string _user=""  ;

    public  void RunDialog()
    {

        _user = "Peter";

    }

    public static string _User { get; set; }

}
在阅读了答案之后,我编辑了我的代码,但仍然无法获得静态变量\u 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; } 
} 
属性
\u User
创建自己的不可见私有支持字段,这就是为什么它与您在别处声明的私有
\u User
字段完全分离的原因

(样式指南规定了公共静态属性的名称
User
,但这只是一个指南。)

对于不支持自动属性且公共属性名称中没有下划线的C#的早期版本,还有另一种方法:

public class LoginDialog 
{
    private static string _user;

    // class members
    public  void RunDialog() 
    {
        _user = "Peter";
    }

    public static string User { get { return _user; } } 
}

如果您希望设置
\u user
并通过
\u user
访问它,那么这将不起作用,因为
\u user
当前是一个自动属性+1很可能是问题所在,即使OP没有说明如何“获取”静态值。变量静态声明在哪里???(顺便说一句!!)为什么在我的示例中不起作用?@kmxillo静态变量声明是通过一个名为“自动实现的属性”或“自动属性”的功能进行的,该功能的语法为
PropName{get;set;}
,其中get或set都没有内容。如果您访问该属性,编译器会自动为其创建一个备份字段,那么在C#中您永远看不到或无法访问该字段@phoog:如何在类内部设置私有静态变量,从外部设置为否?我想从外部类中获取,无集合。@kmxillo此答案中的两个示例都有一个只能在声明类中设置的私有字段。