C# - 静态嵌套类

时间:2017-10-02 07:21:35

标签: c# oop

我想从Windows窗体应用程序的任何部分访问两个类。如何添加几个参与者以及如何引用它们? 这个想法是这样的:

//add participants
Dialog.Participants.Add(new Participant { state = "" });
//modify state
Dialog.Participants[0].state = ...


public class Dialog
{
    public static string state { get; set; }
    public static List<Participant> Participants { get; set; }
}

public class Participant
{
    public static string state { get; set; }
    public static List<string> actions { get; set; }
}

也许有更好的方法可以做到这一点?

3 个答案:

答案 0 :(得分:3)

您可能滥用了static关键字。静态使用是让一个类的所有实例共享相同的值。在这里,每个参与者的参与者状态都是相同的。

尝试从参与者中删除静态关键字,您可能已经完成了。

答案 1 :(得分:0)

我建议使用Singleton-pattern,这样每个app-domain 只允许一个类的单个实例。这样你根本不需要任何static,只需获取单个实例并调用其任何成员:

public class Dialog
{
    private readonly static _instance = new Dialog();
    public static Instance { get { return _instance; }}

    public List<Participant> Participants { get; set; }
}

现在您可以在程序中的任何地方使用 代码:

Dialog.Instance.Participants[.}.state ? ...

答案 2 :(得分:0)

只需从Participant类属性中删除static修饰符即可。静态将使它们与defiend实例无关,并且不能像这样调用:

Dialog.Participants[0].state = ...