Ram*_*Ram 0 .net c# casting static-typing
我有两节课
public class A
{
public A()
{
}
}
public class B:A
{
public B()
{
}
}
Run Code Online (Sandbox Code Playgroud)
它的主要代码如下
A oa = new B();
B ob = new A();
Run Code Online (Sandbox Code Playgroud)
第1行成功编译,而第2行显示类型转换错误.为什么会这样.什么时候new B()和new A()被召唤到底发生了什么?
您已声明了一个类型的变量B,然后尝试为其分配一个类型的值A.你已经定义B了一种A,但这并不意味着所有人A都是B.
可以这样想:
class Animal { }
class Dog : Animal { }
class Cat : Animal { }
Run Code Online (Sandbox Code Playgroud)
你可以做Animal rex = new Dog(),因为所有的狗都是动物,但不是Dog fido = new Animal(),因为不是所有的动物都是狗.
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |