全局类的实例

仍在努力了解C#(主要与C合作)。 我有一个类“设备”,并希望创建该类的实例,但也想全局访问实例,因为我在我的GUI方法中使用它们太多了。

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

以某种方式在全球宣布:

  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"); } 

我一直在阅读关于单例模式,但看起来你必须创建一个单例类,但我的“设备”类被多次使用来创建许多设备。 也许我只是不明白这种模式。

创建一个新实例并将其分配给静态属性或字段:

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

请注意,AnyClass类不必是静态的(但这意味着所有成员必须是静态的)。

另请注意,readonly关键字不是必需的,对于单身人士来说这是一个好习惯(就像Mark在他的评论中所建议的那样)。