我只是試圖實現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