如果我把Main()放在struct而不是class中有什么区别?

时间:2013-03-10 17:53:02

标签: c#

如果我将静态方法Main()放在结构而不是类中,有什么区别?

struct Program
{
    static void Main(string[] args)
    {
        System.Console.WriteLine("Hello World");
    }
}

如果没有区别,为什么Microsoft默认为其容器选择一个类?

2 个答案:

答案 0 :(得分:3)

没有任何区别。
(超出结构和类之间的普通差异)

如果您没有创建该类型的任何实例,则应将其放在static class中 如果这样做,您应该根据类型的实际用途来决定。

答案 1 :(得分:0)

与Application Statup Point of View存在 NO 差异。

如果你看一下IL代码。

  • 如果struct程序类从System.ValueType延伸,而class则程序从System.Object延伸

class

.class private auto ansi beforefieldinit Program
    extends [mscorlib]System.Object
{
    .method public hidebysig specialname rtspecialname instance void .ctor() cil managed
    {
        .maxstack 8
        L_0000: ldarg.0 
        L_0001: call instance void [mscorlib]System.Object::.ctor()
        L_0006: ret 
    }

    .method private hidebysig static void Main(string[] args) cil managed
    {
        .maxstack 8
        L_0000: ldstr "Hello World"
        L_0005: call void [mscorlib]System.Console::WriteLine(string)
        L_000a: ret 
    }

}

struct

.class private sequential ansi sealed beforefieldinit Program
    extends [mscorlib]System.ValueType
{
    .method private hidebysig static void Main(string[] args) cil managed
    {
        .entrypoint
        .maxstack 8
        L_0000: ldstr "Hello World"
        L_0005: call void [mscorlib]System.Console::WriteLine(string)
        L_000a: ret 
    }

}