2011-12-03 42 views
3

我知道標題可能不清楚,我對此表示歉意。 所以我在Visual Studio中有兩種形式,第一種形式是用戶登錄系統,第二種形式是其他事情發生的地方。如何通過應用程序運行類的實例

我已經叫在第一種形式叫info類和類是負責收集用戶信息,並檢查登錄等,當用戶登錄到系統中,類需要的用戶ID,並將其存儲到一個私人字符串。從那裏程序進入第二種形式。

現在這裏是我的問題,我該如何使這個類是全局的,以便我可以從第二個窗體訪問存儲的用戶ID?我可以創建該類的另一個實例嗎(info myinfo = new info())?

PS我是新來的面向對象的概念,所以請用戶容易的條款。

+0

請不要在「C#」前添加標題。這就是標籤的用途。 –

回答

5

個人而言,我會投票反對全局。相反,我通常按以下方式進行:

在調用表單1的代碼中,通過屬性從表單獲取參數。然後通過第二種形式的參數傳遞給第二種形式。

例如爲:

void Main() 
{ 
    var form1 = new Form1(); 
    form1.ShowDialog(); 

    var info = form1.GetInfo(); 

    var form2 = new Form2(); 
    form2.SetInfo(info); 
    form2.ShowDialog(); 
} 

如果你真的堅持擁有全球一流的,請看Singleton pattern,爲wsanville pointed out。基本上,它會大致是這樣的:

public sealed class Info 
{ 
    private static Info _instance; 
    private static readonly object _lock = new object(); 

    // Private to disallow instantiation. 
    private Info() 
    { 
    } 

    public static Info Instance 
    { 
     get 
     { 
      lock (_lock) 
      { 
       if (_instance==null) 
       { 
        _instance = new Info(); 
       } 
       return _instance; 
      } 
     } 
    } 
} 
+0

你能舉個例子說明如何做到這一點嗎? –

+0

@AhouraGhotbi完成。 –

+0

謝謝,這是一個很好的解決方案,但有沒有辦法讓這個類作爲全局的(就像你可以在PHP中)並從所有表單訪問它? –

相關問題