有一个窗口设计成单例模式,但是点确定按钮时CLOSE此窗口。这时对象本身还存在吗?
我理解的应该是不存在了,但跟踪执行了一下,发现每次GetInstance时,SelFormInstance还是有值的。
请问什么原因?调用窗口的代码:
SelectForm SelForm = SelectForm.GetInstance();
SelForm.ShowDialog()
/////////////////////////public class SelectForm : System.Windows.Forms.Form
{private static SelectForm SelFormInstance;public static void SelectForm GetInstance()
{
if(SelFormInstance == null)
{
SelFormInstance = new SelectForm ();
}
return SelFormInstance ;
}// 点确定时,窗口被CLOSE了。
public void btnOK_Click(object sender, EventArgs e)
{
this.close();
}
}
我理解的应该是不存在了,但跟踪执行了一下,发现每次GetInstance时,SelFormInstance还是有值的。
请问什么原因?调用窗口的代码:
SelectForm SelForm = SelectForm.GetInstance();
SelForm.ShowDialog()
/////////////////////////public class SelectForm : System.Windows.Forms.Form
{private static SelectForm SelFormInstance;public static void SelectForm GetInstance()
{
if(SelFormInstance == null)
{
SelFormInstance = new SelectForm ();
}
return SelFormInstance ;
}// 点确定时,窗口被CLOSE了。
public void btnOK_Click(object sender, EventArgs e)
{
this.close();
}
}
{private static SelectForm SelFormInstance;public static void SelectForm GetInstance()
{
if(SelFormInstance == null)
{
SelFormInstance = new SelectForm ();
SelFormInstance.Close += onclose;
}
return SelFormInstance ;
} static void onclose(object sender, EventArgs e)
{
SelFormInstance = null;
}// 点确定时,窗口被CLOSE了。
public void btnOK_Click(object sender, EventArgs e)
{
this.close();
}
}不过既然是单例, 不放 Hide() 掉
你自己试试在A窗体添加一个静态全局变量,看可不可以访问咯.结论是---静态是首次调用后,便永远存在了(if ...Main.Run ...).
当然还在啦。