0

我猜是一个相当简单的问题.. 我正在尝试访问公共类中的列表(只是我项目中的一个 .CS 文件。)。

在一个 .xaml.cs 中,我使用

DataClass dataClass = new DataClass();

当我尝试在另一个 .xaml.cs 文件中访问它时,我使用了 DataClass dataClass = new DataClass(); 再次。当然,这会创建一个 NEW 类(因此存储在其中的所有信息都不存在。

如何在不创建新课程的情况下访问课程?

亲切的问候,尼尔斯

4

3 回答 3

1

您可以使列表成为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();
于 2012-10-29T12:55:03.447 回答
0

有一个名为 Singleton 的模式。我想它可以帮助你。

于 2012-10-29T12:58:28.907 回答
0

使其成为只读属性,在第一次访问时实例化一个新实例,如下所示:

private DataClass dataClass;
public DataClass DataClass
{
    get
    {
        if(dataClass  == null)
        {
             dataClass = new DataClass();
        }
        return dataClass;
    }
}
于 2012-10-29T13:40:34.290 回答