gpt4 book ai didi

c# - 这两者之间有区别吗?

转载 作者:行者123 更新时间:2023-11-30 13:38:48 25 4
gpt4 key购买 nike

有区别吗?

class example
{
int i = 5;
}

class example2
{
int i;

public example2()
{
i = 5;
}
}

我更喜欢第二种,因为我不喜欢在声明变量之后再赋值。但是在技术上有区别吗?

最佳答案

简短回答:

长答案:

如果你查看生成的 IL 代码,在 example 的情况下类初始化完成,然后调用构造函数,如 example2类类初始化在构造函数中完成。

示例

.class private auto ansi beforefieldinit example
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: ldc.i4.5
L_0002: stfld int32 ConsoleApplication1.example::i
L_0007: ldarg.0
L_0008: call instance void [mscorlib]System.Object::.ctor()
L_000d: ret
}


.field private int32 i

}

对于 example2

.class private auto ansi beforefieldinit example2
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: ldarg.0
L_0007: ldc.i4.5
L_0008: stfld int32 ConsoleApplication1.example2::i
L_000d: ret
}


.field private int32 i

}

关于c# - 这两者之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14866763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com