我猜是一个相当简单的问题..我正在尝试访问公共类中的列表(只是我项目中的.CS文件。)。
在一个.xaml.cs中,我使用
访问该类DataClass dataClass = new DataClass();
当我尝试在另一个.xaml.cs文件中访问它时,我使用了DataClass dataClass = new DataClass();再次。当然这会创建一个NEW类(所以存储在里面的所有信息都不存在。
如何在不创建新类的情况下访问类?
亲切的问候, 尼尔斯
答案 0 :(得分:1)
您可以在DataClass中将列表设为static data member,并使方法从其他类访问它。静态数据成员是该类的所有实例的共享副本。如果列表应该由使用锁的不同线程访问,则可以使其成为并发列表。您可以将ConcurrentBag用于多线程环境。值得一读的singleton pattern通常用于类似情况。
public class DataClass
{
public string Timestamp { get; set; }
private static DataClass instance;
private DataClass() { }
public static DataClass Instance
{
get
{
if(instance==null)
{
instance = new DataClass();
}
return instance;
}
}
}
public class Class1
{
public void SetValue(string str)
{
DataClass ds = DataClass.Instance;
ds.Timestamp = "value1";
}
}
public class Class2
{
public string GetValue(string str)
{
DataClass ds = DataClass.Instance;
return ds.Timestamp;
}
}
Class1 c1 = new Class1();
c1.SetValue("hello");
Class2 c2 = new Class2();
string value = c2.GetValue();
答案 1 :(得分:0)
有一种名为Singleton的模式。我想它可以帮到你。
答案 2 :(得分:0)
使它成为一个只读属性,在第一次访问时实例化一个新实例,如下所示:
private DataClass dataClass;
public DataClass DataClass
{
get
{
if(dataClass == null)
{
dataClass = new DataClass();
}
return dataClass;
}
}