C#单例表单模式,如何运行2个或更多表单?

C#单例表单模式,如何运行2个或更多表单?,c#,design-patterns,C#,Design Patterns,我试图同时运行多个单例表单,但有问题。 我想运行几个相同的表单,因为它们是同一个对象,我不想让几个单例对象(如果创建的对象很少,单例将失去它的意义)。 我有单例表单的代码: 我试着做: 但它只运行1个表单 如何运行它,使其能够同时运行2个或更多单例表单?如果可能的话(我是说容易做到) 另外,有人告诉我这是可能的,我应该试试。这是单体模式,意味着你只能得到一个单体对象。如果您想要获得N*个对象,那么只需将其从单例中移除并调用构造函数即可 如果您真的愿意,您可以创建某种混合静态,允许您设置可以返回的

我试图同时运行多个单例表单,但有问题。 我想运行几个相同的表单,因为它们是同一个对象,我不想让几个单例对象(如果创建的对象很少,单例将失去它的意义)。 我有单例表单的代码:

我试着做:

但它只运行1个表单

如何运行它,使其能够同时运行2个或更多单例表单?如果可能的话(我是说容易做到)


另外,有人告诉我这是可能的,我应该试试。

这是单体模式,意味着你只能得到一个单体对象。如果您想要获得N*个对象,那么只需将其从单例中移除并调用构造函数即可

如果您真的愿意,您可以创建某种混合静态,允许您设置可以返回的最大实例数

public static int MaxInstances;
public static List<MyObject> instanceList;
public static MyObject GetInstance()
{
    //Fill the instance list up to the MaxInstances
}
公共静态int-MaxInstances;
公共静态列表实例列表;
公共静态MyObject GetInstance()
{
//将实例列表填充到MaxInstances
}

然而,管理这将是困难的,可能会导致错误。我想,您可能可以传回实例的索引,然后也可以按索引请求实例。但是,同样,这看起来很容易出错,您应该只使用普通的实例,“多个单例形式”是一种矛盾修饰法。很明显,你在这里并不想要单身汉。所以不要使用它。实际上,这很有意义,因为您可能需要一个特定表单的实例。@Lloyd yes-但是OP想要多个实例来实例化一个单例,这并不意味着sense@Charleh是的,你当然是对的。为什么要使用f1.Show()和Application.Run(f2)?为什么两种形式都不使用Show方法呢?
    SingletonForm f1 = SingletonForm.Instance;
    SingletonForm f2 = SingletonForm.Instance;
    f1.Show();
    Application.Run(f2);
public static int MaxInstances;
public static List<MyObject> instanceList;
public static MyObject GetInstance()
{
    //Fill the instance list up to the MaxInstances
}