关于铸造和物体

时间:2010-12-20 22:48:12

标签: object c#-3.0 types casting type-safety

这很简单,我只想解释一下:

internal class B { // Base class
}
internal class D : B { // Derived class
}

在我写的其他课程中:

B b3 = new Object(); //compilation time error!

为什么???我们认为所有类都继承自“object”

2 个答案:

答案 0 :(得分:4)

BObject更专业,因此您无法将Object实例分配给B引用。这是因为不是每个Object实际上都是B - 只有相反的情况才是真的。

假设您在班级x中有一个字段B。当您实例化Object时,没有为该字段保留内存,如果您可以将其分配给类型为B的引用,则它将尝试读取或写入未分配的内存,这不是允许(或有用)。

答案 1 :(得分:2)

所有类都是object,但并非所有对象都是{someclass}

以类似的方式,所有公共汽车都是车辆,但并非所有车辆都是公共汽车。