gpt4 book ai didi

c# - C#中类成员初始化时是否生成默认构造函数?

转载 作者:太空狗 更新时间:2023-10-29 22:15:02 25 4
gpt4 key购买 nike

假设我像这样初始化一个类的成员:

class A 
{
public int i=4;
public double j=6.0;
}

在这种情况下,编译器是否生成默认构造函数?

一般来说,我知道构造函数可以初始化类实例变量的值,也可以执行一些其他适合类的初始化操作。但是在上面的示例中,我已经在构造函数之外初始化了 ij 的值。在这种情况下,编译器是否仍然生成默认构造函数?如果是这样,默认构造函数是做什么的?

最佳答案

在这种情况下,编译器仍然会生成一个默认构造函数。构造函数处理 i 和 j 的初始化。如果您查看 IL,这是显而易见的。

.class auto ansi nested private beforefieldinit A
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
L_0000: ldarg.0 // pushes "this" onto the stack
L_0001: ldc.i4.4 // pushes 4 (as Int32) onto the stack
L_0002: stfld int32 TestApp.Program/A::i // assigns to i (this.i=4)
L_0007: ldarg.0 // pushes "this" onto the stack
L_0008: ldc.r8 6 // pushes 6 (as Double) onto the stack
L_0011: stfld float64 TestApp.Program/A::j // assigns to j (this.j=6.0)
L_0016: ldarg.0 // pushes "this" onto the stack
L_0017: call instance void [mscorlib]System.Object::.ctor() // calls the base-ctor
/* if you had a custom constructor, the body would go here */
L_001c: ret // and back we go
}

关于c# - C#中类成员初始化时是否生成默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649140/

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