我可以在C#中将一个子类类型转换为其他子类对象

时间:2012-01-26 14:56:33

标签: c# .net inheritance

我想输入以下内容:

Class A
{
}

Class B : A
{
}

Class C: A
{
}
Class D{
B b = new b();
C c = (C) b;
}

请建议如何输入C级到B级

6 个答案:

答案 0 :(得分:5)

不,这是不可能的,因为B 是C,所以这个演员必须失败。一种解决方法是实现自定义显式转换运算符,否则没有办法 - 您只能在同一继承树中转换为更具体的类型(向下转换)或基类(向上转换)。

答案 1 :(得分:2)

你做不到。 你可以把B投到A。

答案 2 :(得分:2)

这根本不可能。你不能进行这种转换。

实际上他们有相同的基类,但他们不是相同。例如,看看这个。

TriangleShapeRectangleShape

但您无法将Triangle转换为Rectangle,因为它们不同。

答案 3 :(得分:1)

不,你不能。如果要将属性从一个类复制到另一个类,可以考虑AutoMapper

答案 4 :(得分:1)

不可能。类C和B在类层次结构中不相关。

答案 5 :(得分:1)

Animal
{
}

Giraffe : Animal
{
}

Shark : Animal
{
}

你的问题是你如何将长颈鹿变成鲨鱼。不幸的是,它无法完成。