C# 为什么Win Forms应用程序在静态类中有Main,而我应该留在中
Windows窗体应用程序项目将主方法放置在静态类中 对于我这个来自Java的新手来说,这很奇怪,也很不舒服。我有几个简短的问题可以帮助我更好地理解发生了什么,以及应该如何按照惯例处理C# 为什么Win Forms应用程序在静态类中有Main,而我应该留在中,c#,main,static-classes,C#,Main,Static Classes,Windows窗体应用程序项目将主方法放置在静态类中 对于我这个来自Java的新手来说,这很奇怪,也很不舒服。我有几个简短的问题可以帮助我更好地理解发生了什么,以及应该如何按照惯例处理 为什么这个类在默认情况下是静态的 我是否应该在Main中创建一个非静态公共类的新实例,然后从该类开始工作 如果不是,我应该如何编写入口点位于静态类中的应用程序(结构上) 要启动程序,您需要一个对象及其方法的实例。例如,在这种情况下,为了启动Windows应用程序,CLR的主要入口点通常是“Program.cs”
- 为什么这个类在默认情况下是静态的
- 我是否应该在Main中创建一个非静态公共类的新实例,然后从该类开始工作
- 如果不是,我应该如何编写入口点位于静态类中的应用程序(结构上)
- 要启动程序,您需要一个对象及其方法的实例。例如,在这种情况下,为了启动Windows应用程序,CLR的主要入口点通常是“Program.cs”。所以您需要调用程序,然后调用它的静态方法。一个简单的代码表示可以是:
//Example Entry point of Program just for interpretation
public static class Foo
{
private static int intID { get; set; }
public static string strName { get; set; }
public static string Start()
{
return "Program run successfully";
}
}
如果这是CLR的入口点,为了启动和调用它,您只需:
Foo.Start();
在WinForm情况下,其:
Program.Main();
请记住,Program.cs只是一个默认的项目模板。您可以删除它并在其他类中编写Main函数,甚至使用static Main重命名静态类
关于第二个问题,答案是肯定的。Bullet 1):编译器设计中任意选择的结果(编译器可能创建了类“Program”的实例并调用了它的“Main”方法)。子弹2):是的。@Graffito不可能要求更干净的回答。非常感谢。“你可以删除它并在其他类中编写主函数。”。。哇,我从来没有因为某种原因想到过。。谢谢