4

仍在尝试了解 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");
        }

我一直在阅读有关单例模式的文章,但看起来您必须创建一个单例类,但我的“设备”类被多次使用以创建许多设备。也许我只是不太了解这种模式。

4

1 回答 1

9

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

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

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

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

于 2013-07-09T18:34:59.467 回答