8
为什么用Java和C#而不是构造函数使用静态main方法?
我正在寻找来自主要来源或次要来源的明确答案,为什么Java和C#决定将静态方法作为其入口点,而不是通过Application类的实例表示应用程序实例(具有入口点)作为合适的构造函数)。 我先前研究的背景和细节 这已经被问过了。不幸的是,现有的答案只是在乞求这个问题。特别是,以下答案令我不满意,因为我认为它们是不正确的: 如果构造函数被重载,将存在歧义。–实际上,C#(以及C和C ++)允许使用不同的签名,Main因此存在并解决相同的潜在歧义。 一种static方法意味着在初始化之前,没有对象可以被实例化。–这实际上是错误的,某些对象之前已实例化(例如,在静态构造函数中)。 因此,它们可以由运行时调用,而无需实例化父对象。–这根本没有答案。 为了进一步说明为什么我认为这是一个有效且有趣的问题: 许多框架确实使用类来表示应用程序,并使用构造函数作为入口点。例如,VB.NET应用程序框架使用专用的主对话框(及其构造函数)作为入口点1。 从技术上讲,Java和C#都不需要主要方法。好吧,C#需要一个才能进行编译,但是Java甚至不需要。而且在任何情况下都不需要执行它。因此,这似乎不是技术限制。而且,正如我在第一段中提到的那样,仅出于约定,它似乎不符合Java和C#的一般设计原理。 需要明确的是,使用静态方法并没有特定的缺点main,这很奇怪,这使我想知道其背后是否有某种技术原理。 我对主要来源或次要来源的明确答案感兴趣,而不仅仅是猜测。 1尽管有一个回调(Startup)可能会拦截它。
54
java
c#
history
entry-point