我只是试图实现Singleton模式来的WinForms,以便只有一个窗体的实例停留在应用程序生命对象引用和异常,但我面对困难返回从方法同时
我想抛出异常如果单例的实例存在并且同时返回相同的实例引用。
SingletonForm.cs
public class SingletonForm : BaseFormcs
{
private static SingletonForm _instance;
//To stop new keyword from instantiation
private SingletonForm()
{ }
public static SingletonForm GetInstance()
{
if (_instance == null)
return _instance = new SingletonForm();
else
{
throw new Exception("Form already exists"); // execution returns from here
return _instance; // Warning : Unreachable code detected
//I also want to return instance reference.
}
}
}
为什么要在这种情况下抛出异常?这对我来说根本没有多大意义。 – BrokenGlass 2012-02-01 15:55:43
请注意您的单例实现不是线程安全的。 – 2012-02-01 15:56:39
这个问题很难保证答案,因为它似乎是一个非常糟糕的做法,但您可以使用out参数。 public static SingletonForm GetInstance(out Exception ex){} – Lloyd 2012-02-01 15:57:56