2012-11-17 63 views
0

我有以下全局類文件:C#/的WinForms:設置和獲取價值的靜態變量

Global.cs

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

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

我設置字符串GlobarVar的新價值在Form1.cs爲「 1234' 。

Form1.cs的

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

我試圖顯示值使用消息框

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

我失去的東西Form2.cs?

+0

請使用調試器。在getter和setter上設置斷點,讓你知道發生了什麼,而不是猜測它。 –

回答

1

四個選項:

  • 你不是構建Form1您構建Form2
  • 別的東西設置Global.GlobalVar回空或空字符串
  • 你的形式在不同的應用程序域之前,所以他們將完全分開全局類型
  • 您正在運行該應用程序兩次;靜態變量不跨越不同流程

很難說哪個這些是這樣活下去,而我個人倒儘量避免使用全局狀態開始。對您的程序如何工作進行可測試性和推理是一種痛苦。

+1

或者也許你在Form2()後調用Form1()。 –

+0

@PetriucFlorin:將作爲第一個項目符號的一部分進行編輯。 –

0

試試你的屬性頁(文件Global.cs)這樣的:

​​