内存中的值是什么,例如,声明后的整数值(int)但不是初始化?在“CLR vi C#”中,Richter写道,该值类型初始化为0,但不允许使用。 那么在声明像这样的变量
后会在内存中出现什么int testVar;
如何实现初始化检查的机制?
答案 0 :(得分:5)
使用全零的内存初始化类型。我不知道这是否符合所有价值类型的规范,所以除非你检查,否则你不能指望这个。对于不同的值类型,内存中的零可能意味着不同的东西,具体取决于类型所代表的内容。
值类型是自动初始化的,可以在它们是类的字段而不是局部变量时使用。据我所知,CLR本身没有初始化检查。初始化检查由编译器执行,并在使用未初始化变量时报告编译时错误。
答案 1 :(得分:0)
据我所知,声明根据特定类型需要的字节数来保留一些内存。理论上,这些字节可以随机填充物理上占用那些特定硬件字节的任何内容。
答案 2 :(得分:0)
在c#中,某些类型允许您拥有可以具有空值的变量,例如Nullable变量(Int32?intAux)。首先,此类型将为null。否则,Int32变量不允许您具有空值。
您可以验证变量是否已初始化或不是,执行类似(intAux == null)的操作。