Main()
クラスではなく構造体の中に静的メソッドを配置した場合の違いは何ですか?
struct Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
違いがない場合、なぜMicrosoftはデフォルトでコンテナのクラスを選択したのですか?
Main()
クラスではなく構造体の中に静的メソッドを配置した場合の違いは何ですか?
struct Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
違いがない場合、なぜMicrosoftはデフォルトでコンテナのクラスを選択したのですか?
違いはありません。
(構造体とクラスの通常の違いを超えて)
このタイプのインスタンスを作成しない場合は、に配置する必要がありますstatic class
。
その場合は、タイプの実際の使用法に基づいて決定する必要があります。
あなたが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
}
}