你好我有很多变量,如下所述,但是当我改变我所引用的变量的值时,这个变化不会被使用这个变量的变量所适应。
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就是一个例子。 这段代码序列就是一个例子。目标是从数据库中获取一次数据。
答案 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
的对象一样),该字段价值没有更新。