1

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

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

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

4

2 回答 2

3

没有任何区别。
(除了结构和类之间的普通区别)

如果您不创建该类型的任何实例,则应将其放在static class.
如果你这样做,你应该根据类型的实际使用情况来决定。

于 2013-03-10T17:55:54.897 回答
0

从应用程序状态的观点来看没有区别。

如果您查看 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 
    }

}
于 2013-03-10T17:56:55.307 回答