1

Main()クラスではなく構造体の中に静的メソッドを配置した場合の違いは何ですか?

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

違いがない場合、なぜMicrosoftはデフォルトでコンテナのクラスを選択したのですか?

4

2 に答える 2

3

違いはありません。
(構造体とクラスの通常の違いを超えて)

このタイプのインスタンスを作成しない場合は、に配置する必要がありますstatic class
その場合は、タイプの実際の使用法に基づいて決定する必要があります。

于 2013-03-10T17:55:54.897 に答える
0

ApplicationStatupの観点との違いはありません。

あなたが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 に答える