C#不断更新变量

时间:2017-08-10 16:19:03

标签: c# variables global-variables

你好我有很多变量,如下所述,但是当我改变我所引用的变量的值时,这个变化不会被使用这个变量的变量所适应。

 class PublicVariable
{
    public static string ActiveUser = UserInfo.Username;
    public static string ActiveUserPath = $@"{Application.StartupPath}\{ActiveUser}";
    public static string ActiveUserImg = $@"{ActiveUserPath}\User.png";
}
class UserInfo
{
    public static string Username = "-1064548"; //Working 
}
class Starting
{
    public void Login(string Username, string Pwd)
    {
        //After the user logged in.
        UserInfo.Username = "BruceWayne"; //Working
       /* Showing -1064548 = */ MessageBox.Show(PublicVariable.ActiveUser.ToString()); //Not Working.
    }
}

为了简化代码,ActiveUser就是一个例子。 这段代码序列就是一个例子。目标是从数据库中获取一次数据。

1 个答案:

答案 0 :(得分:0)

要解决您的问题,我建议您在此处使用属性。这看起来像这样:

class PublicVariable
{
    public static string ActiveUser => UserInfo.Username;
    public static string ActiveUserPath => $@"{Application.StartupPath}\{ActiveUser}";
    public static string ActiveUserImg => $@"{ActiveUserPath}\User.png";
}

class UserInfo
{
    public static string Username = "-1064548"; //Working 
}

class Starting
{
    public void Login (string Username, string Pwd)
    {
        UserInfo.Username = "BruceWayne";
        MessageBox.Show (PublicVariable.ActiveUser.ToString ());
    }
}

或者您也可以使用方法:

class PublicVariable
{
    public static string ActiveUser() => UserInfo.Username;
    public static string ActiveUserPath() => $@"{Application.StartupPath}\{ActiveUser()}";
    public static string ActiveUserImg() => $@"{ActiveUserPath()}\User.png";
}

class UserInfo
{
    public static string Username = "-1064548"; //Working 
}

class Starting
{
    public void Login (string Username, string Pwd)
    {
        UserInfo.Username = "BruceWayne";
        MessageBox.Show (PublicVariable.ActiveUser().ToString ());
    }
}

实际上,属性和方法之间没有任何重大差异。但是, fields (您使用它们)是不同的,因为它们在依赖值更改时不会更新它们的值。这意味着,只要您没有引用其他值(对于对象,就像您的类Starting的对象一样),该字段价值没有更新。