在C#程序中是否可以有多个main()方法?

15

在 C# 控制台应用程序中是否可以有多个具有相同参数的 main() 方法?如果是,如何实现?


为什么你想要有多个主函数? - Lucas Kauffman
请查看此文章:http://raviranjankr.wordpress.com/2011/05/20/multiple-main-method-in-c/ - mck
第二个会做什么鬼? - user541686
@Mehrdad:坐在那里,直到你需要它。 - ChiefTwoPencils
3个回答

24

你可以有多个主方法,通过编译器指定使用哪一个作为应用程序的入口。详情请参见此链接

示例:

using System;
using System.Collections.Generic;
using System.Text;
 

    namespace Multiple_MainClasses
    {
        class A
        {
            static void Main(string[] args)
            {
                Console.WriteLine("I am from Class A");
                Console.ReadLine();
            }
        }
        class B
        {
            static void Main(string[] args)
            {
     
                Console.WriteLine("I am from Class B");
                Console.ReadLine();
            }
        }
    }

当您运行此代码时,将会发生编译错误。要解决问题,请在解决方案资源管理器中转到项目属性或按ctrl + alt + L, 转到应用程序选项卡,并选择要执行的方法所在的类,如下图所示:

enter image description here


如果在同一个类中有两个主方法,例如main()和main(string[] args),会怎样呢? - Tk1993
@TusharKukreti 这是一个编译错误。只有当签名匹配以下两个之一且方法为静态时,Main方法才被视为入口点:
  1. Main(String[])
  2. Main()
- Jainendra
当我在不同的类文件中有3个主要函数时,在项目的应用程序属性中的“启动对象”选项中只有2个主要方法可用。 - Shiv
似乎提到的链接并没有你指出的那个内容。 - QMaster

4
如果有多个 Main 方法,您可以指定自定义入口点。有关此选项的信息,请参见csc /main
此选项指定包含程序入口点的类(如果有多个类包含一个 Main 方法)。
csc MyClssesWithMain.cs /main:OneOfTheClasses

注意:Main方法必须在不同的类中,因为在同一个类中不能有两个具有相同签名的方法。


3

主函数是你的应用程序的入口点。根据其他人提供的文章,定义多个Main方法在语法上是有效的,但在运行应用程序时必须选择一个单一的main方法。我认为创建一个单一的主函数并通过使用命令行参数等方法使其灵活更有意义。


可以有多个 main 函数,因此这个答案是错误的信息。 - Katu
你添加的文章不允许同时拥有两个主函数。这似乎是编译器的一个技巧,可以让你定义两个函数,但只在编译时包含其中一个。我认为这不是将两个入口点引入您的应用程序。 - TGH
你可以有与类一样多的主函数。votes--; - ChiefTwoPencils
是的,但只能使用其中一个。你不能同时使用它们。 - TGH
没错,但是我认为“这没有意义”的说法有点自以为是。实际上,这是测试你的类功能非常简单的方法。 - ChiefTwoPencils
好的,我的帖子中的语言已经被适度调整了。 - TGH

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