仍在努力了解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");
}
我一直在阅读关于单例模式,但看起来你必须创建一个单例类,但我的“设备”类被多次使用来创建许多设备。也许我只是不明白这种模式。
答案 0 :(得分:7)
创建一个新实例并将其分配给static属性或字段:
public class AnyClass
{
public static readonly Device ThisFieldCanBeReachedFromAnywhere = new Device();
}
请注意,AnyClass类不必是静态的(但这意味着所有成员必须是静态的)。
另请注意,readonly关键字不是必需的,这对单身人士来说是个好习惯(就像Mark在评论中所建议的那样)。