惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
罗磊的独立博客
Last Week in AI
Last Week in AI
爱范儿
爱范儿
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
IT之家
IT之家
博客园 - 【当耐特】
雷峰网
雷峰网
博客园_首页
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
V
V2EX

博客园 - 风前絮~~

回来啦 Rainbow分页解决方案 FTB2.0和CuteEditor的一些问题 testFTB2.0 testCuteEditor 看看MS内部对.NET的使用情况... base想到... 伟大架构师的秘密 权限管理越来越复杂 ASP.NET跨应用程序进行登录的解决 Server的Transfer和Response的Redirect FreeTextBox实现机制 FreeTextBox的ToolbarButton整理 Testing vs Debugger 稍不留神产生代码垃圾 C#中"is" vs "as" - 风前絮~~ 再比较动态调用代码 .NET建议使用的大小写命名原则 using的几种用法
多个Main函数的应用程序 - 风前絮~~ - 博客园
风前絮~~ · 2004-10-25 · via 博客园 - 风前絮~~

        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可以做到吗?答案是肯定的,在属性页中有对应的参数,如下图: