0

我有以下全局类文件:

全球.cs

public static class Global
    {
        private static string _globalVar = "";

        public static string GlobalVar
        {
            get { return _globalVar; }
            set { _globalVar = value; }
        }
    }

我将 Form1.cs 中字符串 GlobarVar 的新值设置为“1234”。

Form1.cs

public Form1()
        {
            InitializeComponent();
            Global.GlobalVar = "1234";
        }

我尝试使用消息框将值显示到 Form2.cs

public Form2()
        {
            InitializeComponent();
            MessageBox.Show(Global.GlobalVar); // displays blank values
        }

我错过了什么吗?

4

2 回答 2

1

四个选项:

  • 你不是在建造Form1之前建造Form2
  • 其他东西正在设置Global.GlobalVar回 null 或空字符串
  • 您的表单位于不同的应用程序域中,因此它们将具有完全独立的全局类型
  • 您正在运行该应用程序两次;静态变量不会跨不同进程存在

很难说是哪种情况,但我个人会尽量避免从使用全局状态开始。对于程序如何工作的可测试性和推理来说,这是一种痛苦。

于 2012-11-17T08:26:25.517 回答
0

Try your property page (file Global.cs) like these:

public class Global
{
    private static string _globalVar;

    public string GlobalVar
    {
        get { return _globalVar; }
        set { _globalVar = value; }
    }
}
于 2013-07-21T10:49:04.147 回答