C#应用程序中,运行时如何知道哪个类包含Main方法?

7

我知道在C#控制台/Windows应用程序中,“Main”方法是运行应用程序的入口点。

如果我们的应用程序有数百个类,运行时如何检测哪个类包含“Main”方法以运行应用程序?

2个回答

3
编译器会查找 static void Main(string[])static int Main(string[]) 来确定入口点。您也可以声明不带 string[] 参数的 Main()。只有在您具有多个类具有 Main() 函数时,才需要特别设置项目设置。这里是MSDN给您的详细答案。

我看到了提到的URL,但它说当有多个入口点时。如果我只有一个入口点,运行时如何检测哪个类包含Main方法?它会搜索所有类(即使我有1000个类)吗? - Syed
是的,编译器会自动完成这个过程 - 它必须构建一个符号表来编译您的项目并构建输出二进制文件。然后,在表中查找Main()方法对于编译器来说是一个微不足道的问题(即使在搜索成千上万个类时,速度也非常快,因为编译器在那时已经准备好了大部分数据)。 - xxbbcc
感谢您的评论。除了MSDN链接之外,任何其他有用的链接描述您的答案都将非常有用。 - Syed
@Syed:嗯,没有什么其他需要补充的了。MSDN在解释发生的事情方面非常准确;当您的项目中只有一个Main()时,这只是更一般说明的特例:在这种情况下,编译器可以简单地推断您希望该Main()成为入口点。如果您有多个,则必须使用项目设置告诉编译器选择哪一个。 - xxbbcc

2

项目设置中可以配置入口点。


4
如果有多个入口点,那么必须进行配置,否则项目将无法编译。 - Austin Salonen
@AustinSalonen 感谢您的评论,如果我只有一个Main方法呢? - Syed
它可能会搜索 static void Main - Austin Salonen
“需要引用出处”,一张截图就可以了。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接