在新建WinForm项目后,在Program.cs下会自动生成Main函数:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}其中Run函数是Application类的非静态成员函数,而Application也不是对象而只是类型。
那么Application.Run会如此调用,该如何解释呢?
请大家帮忙看看,我实在想不出来。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}其中Run函数是Application类的非静态成员函数,而Application也不是对象而只是类型。
那么Application.Run会如此调用,该如何解释呢?
请大家帮忙看看,我实在想不出来。
// 摘要:
// 在没有窗体的情况下,在当前线程上开始运行标准应用程序消息循环。
public static void Run();
//
// 摘要:
// 在特定的 System.Windows.Forms.ApplicationContext 中,在当前线程上开始运行标准应用程序消息循环。
//
// 参数:
// context:
// 一个 System.Windows.Forms.ApplicationContext,应用程序将在其中运行。
public static void Run(ApplicationContext context);
//
// 摘要:
// 在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见。
//
// 参数:
// mainForm:
// 一个 System.Windows.Forms.Form,它代表要使之可见的窗体。
public static void Run(Form mainForm);你转到定义处看看
Form1 frm=new Form1();
frm.ShowDialog();
frm.Dispose();
frm=null;
通常只有一个, 存在玉界面线程中, 叽里咕噜
//Run函数定义
public static void Run(Form mainForm);明显是静态的么,一般的类的静态函数也是这么用的啊。
public class Test
{
public static int GetZero()
{
return 0;
}
}
static void Main()
{
int xx = Test.GetZero();
}
在特定的 ApplicationContext 中,在当前线程上开始运行标准应用程序消息循环。Application.Run直到主窗口关闭才退出,所以new的临时变量可以一直不被回收。
Form mainForm
)静态方法,对象直接调用。执行后,程序进入消息循环,run才是一个程序生命周期的开始
因为,我发现原来是我看的MSDN版本有点问题,在MSDN2008版中,Application的Run成员函数是非静态的,所以使得我闹出了这个笑话,而在MSDN2005版中,Application的Run成员函数确实是静态的。直接调用Application.Run是可行的。
下次,我一定不再犯这种低级错误。我在此向各位回复的热心网友做检讨。