Main()
如果我将静态方法放在结构而不是类中,有什么区别?
struct Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
如果没有区别,为什么微软默认为其容器选择一个类?
Main()
如果我将静态方法放在结构而不是类中,有什么区别?
struct Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
如果没有区别,为什么微软默认为其容器选择一个类?
没有任何区别。
(除了结构和类之间的普通区别)
如果您不创建该类型的任何实例,则应将其放在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
}
}