多个Main函数的应用程序

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

using System;

class Main1
{

   
public static void Main()
   
{
      Console.WriteLine(
"Main1");
      Main2.Main();
    }


}


class Main2
{
   
public static void Main()
   
{
      Console.WriteLine(
"Main2");
    }

 }

    

直接编译肯定出错的,如下图:

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

csc test2.cs /main:Main1

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

class Main1
{

   
public static void Main()
   
{
      Console.WriteLine(
"Main1");
      Main2.Main();
    }


}


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


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

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

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

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

posted on 2004-10-25 23:00 风前絮~~ 阅读(6922) 评论(9) 编辑 收藏

评论

#1楼  回复 引用   

VB还支持将启动对象设为窗体,无需自行写Main就能从任何窗体开始。调试的时候不知道有多方便。
2004-10-26 08:25 | Ninputer[未注册用户]

#2楼[楼主]  回复 引用 查看   

VB在这方面一直都做得很好的。不愧是流行的RAD工具。
2004-10-26 08:54 | 风前絮~~      

#3楼  回复 引用   

>>且需要用public和static来修饰
static是必须的
public 不是必须的
2004-10-26 09:25 | Meyer

#4楼  回复 引用   

csc.exe 中有指定某一个入口的选项
2004-10-26 12:22 | 路游

#5楼  回复 引用   

真方便
2004-10-28 09:11 | 我要去桂林

#6楼  回复 引用   

不错!
2004-10-28 10:16 | 哈哈

#7楼  回复 引用 查看   

在没有使用Nunit之前,我常用它来写测试程序,不过,正式发布工程文件时,删除起来,有点麻烦.........
2004-10-28 23:51 | 寒枫天伤      

#8楼  回复 引用   

我进不了奇迹
2005-09-10 08:36 | 江展华[未注册用户]

#9楼  回复 引用 查看   

Public可以不用吧,VS2008默认的控制台程序就是是Private的。
2009-09-09 20:32 | konger      

导航

<2004年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

公告

  • jonathan88s@hotmail.com
  • 除特别说明,本站点所有内容和作品都按照创作共用方式授权
  • Site Meter
  • 昵称:风前絮~~
    园龄:7年5个月
    粉丝:2
    关注:0

    搜索

     
     

    常用链接

    随笔分类

    随笔档案

    文章分类

    文章档案

    Friends

    Useful

    阅读排行榜

    推荐排行榜