多个Main函数的应用程序

 Main函数是C#应用程序的主入口,且需要用public和static来修饰,是否需要返回值和输入命令参数则根据实际需要而定。但是否想过在一个应用程序中,允许有多个类包含Main吗?
例如下面的代码:

多个Main函数的应用程序using System;
多个Main函数的应用程序
多个Main函数的应用程序class Main1
多个Main函数的应用程序{
多个Main函数的应用程序
多个Main函数的应用程序   public static void Main()
多个Main函数的应用程序   {
多个Main函数的应用程序      Console.WriteLine("Main1");
多个Main函数的应用程序      Main2.Main();
多个Main函数的应用程序    }

多个Main函数的应用程序
多个Main函数的应用程序}

多个Main函数的应用程序
多个Main函数的应用程序class Main2
多个Main函数的应用程序{
多个Main函数的应用程序   public static void Main()
多个Main函数的应用程序   {
多个Main函数的应用程序      Console.WriteLine("Main2");
多个Main函数的应用程序    }

多个Main函数的应用程序 }

多个Main函数的应用程序    

直接编译肯定出错的,如下图:
多个Main函数的应用程序

       看起来似乎不允许在一个应用程序集中定义多个Main函数,但在编译时候设置参数是允许的。
如下面的命令:

csc test2.cs /main:Main1

        这时候会用Main1类中的Main作为主入口点。而另外一个Main还可以被看作一般的类的静态函数来对待,可以直接调用,如下面的代码中:

多个Main函数的应用程序class Main1
多个Main函数的应用程序{
多个Main函数的应用程序
多个Main函数的应用程序   public static void Main()
多个Main函数的应用程序   {
多个Main函数的应用程序      Console.WriteLine("Main1");
多个Main函数的应用程序      Main2.Main();
多个Main函数的应用程序    }

多个Main函数的应用程序
多个Main函数的应用程序}


用ildasm来检查对比两个Main函数的异同:
多个Main函数的应用程序

        可以看到.entrypoint在Main1::Main中。

如果编译时候用别的参数:
csc test2.cs /main:Main2

则又可以将主入口点定为另外一个类的Main函数了。这种用法对于调试和测试应该可以带来许多方便。

那么如果在Vistual Studio的IDE可以做到吗?答案是肯定的,在属性页中有对应的参数,如下图:
多个Main函数的应用程序

本文转自风前絮~~博客园博客,原文链接:http://www.cnblogs.com/windsails/archive/2004/10/25/56658.html,如需转载请自行联系原作者