2013-07-09 62 views
2

仍試圖瞭解C#(主要與C一起工作)。我有一個類「設備」,並希望創建一個類的實例,但也想全局訪問實例,因爲我在GUI方法中使用它們非常多。類的全局實例

public class Device 
    { 
     public string Name; 
     public List<string> models = new List<string>(); 
     public List<string> revisions = new List<string>(); 
     ... 
    } 

不知怎的,在全球範圍本聲明:

Device Device1 = new Device(); 
Device1.Name = "Device1"; 

然後訪問它後來在WPF方法:

private void DeviceViewItem_Selected(object sender, RoutedEventArgs e) 
    { 
     TreeViewItem selected = (TreeViewItem)sender; 

     if (selected.Name == Device1.Name) 
     { 
      Device1.Models.Add("something"); 
      Device1.Revisions.Add("something"); 
     } 

我一直在閱讀有關Singleton模式,但它看起來像你創建一個Singleton類,但我的「設備」類多次使用來創建多個設備。也許我只是不明白這種模式。

+3

您正在尋找'static'。 – SLaks

+0

如果您需要多個Singleton,您可以查看[Multiton模式](http://en.wikipedia.org/wiki/Multiton_pattern)。 –

回答

6

創建一個新的實例,並將其分配給static屬性或字段:

public class AnyClass 
{ 
    public static readonly Device ThisFieldCanBeReachedFromAnywhere = new Device(); 
} 

注意的是,類AnyClass不必是靜態的(但是這將意味着,所有成員都必須靜)。

另請注意,readonly關鍵字不是必需的,這對單身人士來說只是一個好習慣(就像Mark在他的評論中所建議的那樣)。

+4

可能使其只讀。這對單身人士來說很常見。 – MJM

+0

LightBricko,正是我所需要的。我到處尋找並遇到靜態成員,但沒有想到靜態創建新實例。謝謝! – DevynB

+0

@Mark感謝提及只讀。絕對要堅持良好的做法;) – DevynB