.Net7托管Main入口的四种写法(茴香豆?)

博客 动态
0 185
羽尘
羽尘 2023-01-27 09:28:42
悬赏:0 积分 收藏

.Net 7 托管Main入口的四种写法(茴香豆?)

前言:
按照CLR的规则,C#托管Main入口其实有四种写法。



写法

第一种:最常见的,也是VS默认的,返回值void,带一个参数

static void Main(string[] args)
{
   Console.Write("Tian xia feng yun chu wo bei");
   Console.ReadLine();
}

第二种:返回值void,不带参数

static void Main()
{
    Console.Write("Tian xia feng yun chu wo bei");
    Console.ReadLine();
}

第三种:返回值int,带一个参数

static int Main(string []args)
{
    Console.Write("Tian xia feng yun chu wo bei");
    Console.ReadLine();
    return 0;
}

第四种:返回值Int,不带参数

static int Main()
{
    Console.Write("Tian xia feng yun chu wo bei");
    Console.ReadLine();
    return 0;
}


原理
这四种类型,根据CLR的规则演变

enum CorEntryPointType
{
    EntryManagedMain,     // void main(String[])
    EntryCrtMain          // unsigned main(void)
};

看到,CLR定义托管Main入口的返回值两种类型:void和unsigned(int)。
参数也有两种类型:void和String[]。
把这些规则两两组合,就成了托管Main入口的所有种类。

同时也要注意的是,它这个Main的参数不能超过一个,要么0个,要么1个。多了的话,它直接报错了。这个规则也是CLR定义的。

 if (nParamCount != 1)
            ThrowMainMethodException(pFD, IDS_EE_TO_MANY_ARGUMENTS_IN_MAIN);

通过CLR的这些规则,控制C#代码的运作。



结尾
作者:江湖评谈
image

posted @ 2023-01-27 09:19  江湖评谈  阅读(0)  评论(0编辑  收藏  举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员