.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章