我猜是一个相当简单的问题.. 我正在尝试访问公共类中的列表(只是我项目中的一个 .CS 文件。)。
在一个 .xaml.cs 中,我使用
DataClass dataClass = new DataClass();
当我尝试在另一个 .xaml.cs 文件中访问它时,我使用了 DataClass dataClass = new DataClass(); 再次。当然,这会创建一个 NEW 类(因此存储在其中的所有信息都不存在。
如何在不创建新课程的情况下访问课程?
亲切的问候,尼尔斯
我猜是一个相当简单的问题.. 我正在尝试访问公共类中的列表(只是我项目中的一个 .CS 文件。)。
在一个 .xaml.cs 中,我使用
DataClass dataClass = new DataClass();
当我尝试在另一个 .xaml.cs 文件中访问它时,我使用了 DataClass dataClass = new DataClass(); 再次。当然,这会创建一个 NEW 类(因此存储在其中的所有信息都不存在。
如何在不创建新课程的情况下访问课程?
亲切的问候,尼尔斯
您可以使列表成为DataClass 中的静态数据成员,并创建从其他类访问它的方法。静态数据成员是该类所有实例的共享副本。如果列表应该由不同的线程使用锁访问,您可以将其设为并发列表。您可以将ConcurrentBag用于多线程环境。值得一读的是在类似情况下经常使用的单例模式。
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();
有一个名为 Singleton 的模式。我想它可以帮助你。
使其成为只读属性,在第一次访问时实例化一个新实例,如下所示:
private DataClass dataClass;
public DataClass DataClass
{
get
{
if(dataClass == null)
{
dataClass = new DataClass();
}
return dataClass;
}
}