0

次のグローバル クラス ファイルがあります。

Global.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

4 つのオプション:

  • Form1構築する前に構築していないForm2
  • 他の何かがGlobal.GlobalVarnull または空の文字列に戻っています
  • フォームは異なるアプリ ドメインにあるため、完全に別のグローバル タイプになります。
  • アプリケーションを 2 回実行しています。静的変数は異なるプロセス間で存続しません

どちらが当てはまるかを判断するのは難しいですが、個人的には、最初からグローバル状態を使用することは避けたいと思います。プログラムがどのように機能するかについてのテスト容易性と推論にとっては苦痛です。

于 2012-11-17T08:26:25.517 に答える