Int32是对象的多态吗?

3
当我执行时
int k=3;

我在反射器中该如何找到虚拟语句?

Object k = new Int32();

我该在哪里找到变量值的赋值?

2个回答

4

尽管基本类型继承自Object,但.NET Framework以特殊的方式处理它们。int是int,并使用诸如ldc.i4(将32位常量加载到堆栈上)之类的函数进行处理。

在需要对象的情况下,通过一个称为装箱的过程将int转换为Object。


2

没有这样的陈述。

Int32 是一个不可变的值类型。
3 本身就是一个 Int32 值。


但是所有的类都继承自对象,因此这里一定有一些多态机制... - Royi Namir
1
int32不继承自对象。但它可以被装箱成一个对象。 - thorkia
2
@thorkia:实际上,它确实继承了。Int32继承自ValueType;ValueType继承自Object。但是,编译器和CLR将派生自ValueType的类视为特殊情况。 - James Curran
@Mid,通过“no such statement exists” ,@SLaks可能是指Int32没有公共构造函数,因此您无法调用new。 您可以使用显式转换对基元类型进行装箱和拆箱(debox? ;):int k = (int) (Int32) 3; - Frédéric Hamidi
@Mid,没错,我刚刚也测试了一下:你不能使用 new Int32(42),但是你可以使用 new Int32()。我的错误,可能是我有点累了。 - Frédéric Hamidi
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接