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

时间:2010-04-09 19:36:32

标签: c# main

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

10 个答案:

答案 0 :(得分: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
        }
    }
}

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

我不相信有一种方法可以在C#方面做到这一点,但是如果你愿意编辑你的IL,那么很容易进入并将.entrypoint添加到IL中的函数。查看维基百科上的CLI条目。

答案 3 :(得分:1)

答案 4 :(得分:1)

必须将其称为Main()。

答案 5 :(得分:1)

需要将其称为Main(),因为它是应用程序的入口点。

名称和限制由框架定义。这是MSDN页面供参考:

Main (C#)

答案 6 :(得分:1)

必须称为Main。

如果您真的想要,可以创建自己的方法,并将其称为Main中唯一的代码行。

public static void Main(String[] args)
{
    Mane(args);
}

答案 7 :(得分:1)

不......主要是标准的。你可以做的是从项目属性的“启动对象”设置更改承载Main方法的类

但实际上,你为什么要这样做?每个人都知道它是主要的...所以你会混淆其他可能会看你的代码的开发人员

答案 8 :(得分:1)

来自“Main () and Other Methods (C# vs Java)”:

  

每个C#应用程序必须包含一个Main方法,指定程序执行的开始位置。

答案 9 :(得分:0)

从C#9.0开始,Main方法为no longer required

在C#9.0中,您只能选择在顶层编写主程序:

using System;

Console.WriteLine("Hello World!");

允许任何语句。该程序必须在using之后,文件中任何类型或名称空间声明之前发生,并且您只能在一个文件中执行此操作,就像今天只有一个Main方法一样。< / p>

这将保存一些样板代码,并且对于快速控制台程序进行测试很有用,但是对于更严重的问题,我仍然建议使用Main;如果您正在寻找程序的切入点,则在整个解决方案中搜索Main(很容易,但是搜索名称空间/类/方法的 lack 却不那么容易