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