C#自己命名Main()方法的方法?

Chi*_*lln 12 c# program-entry-point

快速问题,有什么方法可以随心所欲地调用主要方法吗?或者它必须被称为"Main()"?

Jes*_*cer 18

请注意,这是一个C#约定,而不是.NET运行时约定.您可以在IL中为您的方法命名您的方法:

.module Mane.exe
.subsystem 3
.corflags 9

.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89)
  .ver 2:0:0:0
}

.assembly Mane
{
    .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 
    .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 ) 
    .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 )
    .custom instance void [mscorlib]System.Resources.NeutralResourcesLanguageAttribute::.ctor(string) = ( 01 00 05 65 6E 2D 55 53 00 00 )

    .permissionset reqmin
               = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'Execution' = bool(true)}}
    .hash algorithm 0x00008004
    .ver 1:0:0:0
}

.namespace Mane
{
    .class private abstract auto ansi sealed beforefieldinit Program extends [mscorlib]System.Object
    {
        .method private hidebysig static void Mane() cil managed
        {
            .entrypoint
            .maxstack 1
            ldstr "Hello, World!"
            call void [mscorlib]System.Console::WriteLine(class System.String)
            ret
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

您可以将main方法调用为其他方法,但除非调用它,否则不会将其作为应用程序中的第一个方法调用Main.还有一些其他要求和事项需要注意.来自MSDN:

  • Main方法是程序的入口点,程序控制的开始和结束位置.
  • 它在类或结构中声明.它必须是静态的,不应该是公开的.
  • 它可以具有void或int返回类型.
  • 可以使用或不使用参数声明Main方法.
  • 参数可以读作零索引命令行参数.
  • 与C和C++不同,程序的名称不被视为第一个命令行参数.