谁在分配变量a
的值?为什么没有在代码中写任何默认构造函数时创建默认构造函数(我检查了创建默认构造函数的ildasm)
已创建的默认构造函数中的内容:
method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [System.Runtime]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method Program::.ctor
代码:
using System;
namespace demo
{
class Program
{
int a;
static void Main(string[] args)
{
Program obj = new Program();
Console.WriteLine(obj.a);
Console.ReadLine();
}
}
}
在上面的代码中,输出为0,谁为其分配了值?创建默认构造函数还是CLR?
instance void [System.Runtime]System.Object::.ctor()
在默认构造函数的ildasm代码中是什么意思
答案 0 :(得分:2)
基础。文档中的所有内容-相当早。
在上面的代码中,输出为0,谁为其分配了值?
.NET中的变量都被初始化为0,以避免由于早期使用内存地址而重复使用内存片段。
为什么我在代码中未编写任何内容时会创建默认构造函数
因为它是创建的DEFAULT构造函数,所以没有指定构造函数。也许对“默认”一词有混淆?如果所有对象都有构造函数,这将变得更加容易,尤其是当我将您的对象子类化然后调用它时;)