如果我将静态方法Main()
放在结构而不是类中,有什么区别?
struct Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
如果没有区别,为什么Microsoft默认为其容器选择一个类?
答案 0 :(得分:3)
没有任何区别。
(超出结构和类之间的普通差异)
如果您没有创建该类型的任何实例,则应将其放在static class
中
如果这样做,您应该根据类型的实际用途来决定。
答案 1 :(得分: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
}
}