为什么大多数C#程序中的主要方法入口点是静态的?
答案 0 :(得分:60)
为了调用实例方法,您需要一个对象的实例。这意味着为了启动您的程序,CLR需要创建一个说Program
的实例,以便调用方法Main
。因此Program
的构造函数将在Main
之前运行,这违背了完全使用main的目的。
答案 1 :(得分:16)
我转过身来。实现允许Main作为实例方法的功能有什么令人信服的好处?功能昂贵;如果没有令人信服的好处,他们就无法实施。
您是否有充分的理由认为应该允许Main作为实例方法?
答案 2 :(得分:4)
从概念上讲,您只有一个静态实例。静态方法很好地映射到程序的单个起始点的习语。语言设计者可以创建一个特殊的程序类来与main方法一起使用,但是选择创建一个静态函数作为入口点。在某些层面上,它实际上只是一种设计选择。
答案 3 :(得分:1)
因为否则它必须创建一个对象,并且运行构造函数可能会产生负面影响。
答案 4 :(得分:1)
你怎么能在main之前创建你的类实例呢?
答案 5 :(得分:0)
可以在不创建实例的情况下执行静态方法。按照惯例,他们使用main
方法作为默认方法来调用。
答案 6 :(得分:0)
.NET runtime
调用Main
方法。 (注意:也可以从其他地方调用Main,例如,在ExampleClass的另一个方法中从代码Main()调用。)static
关键字使方法可以在instance
ExampleClass
circular dependency
的情况下访问。所以Main方法是一个入口点,必须声明为静态。
否则,该程序将需要 一个实例,但任何实例都会 需要一个程序。
为避免将无法解析的 {{1}} main用作切入点
参考:http://en.wikipedia.org/wiki/C_Sharp_(programming_language
答案 7 :(得分:-3)
对于类的每个对象都包含main方法和其他方法和变量,每个变量和方法都包含所有对象的单独副本,但主类副本只是它们之间的一个副本,因此要在数字之间进行复制。对象我们必须将main方法设为静态。