.net值类型初始化

内存中的值是什么,例如,声明后的整数值(int)但不是初始化? 在“CLR vi C#”中,Richter写道,该值类型初始化为0,但不允许使用。 那么在声明变量后会在内存中出现什么样的内容

int testVar; 

如何实现初始化检查的机制?

类型使用全零的内存进行初始化。 我不知道这是否符合所有值类型的规范,因此除非您检查,否则您不能指望这一点。 对于不同的值类型,内存中的零可能意味着不同的东西,具体取决于类型所代表的内容。

值类型是自动初始化的,可以在它们是类的字段而不是局部变量时使用。 据我所知,CLR本身没有初始化检查。 初始化检查由编译器执行,并在使用未初始化变量时报告编译时错误。

据我所知,声明根据这种特定类型需要的字节数来保留一些内存。 理论上,这些字节可以随机填充物理上占用那些特定硬件字节的任何字节。

在c#中,某些类型允许您拥有可以具有空值的变量,例如Nullable变量(Int32?intAux)。 首先,此类型将为null。 否则,Int32变量不允许您具有空值。

您可以validation变量是否已初始化或不是,执行类似(intAux == null)的操作。