【发布时间】:2010-01-29 19:24:06
【问题描述】:
如果我创建类 A,而类 B 继承自类 A,为什么 C# 要求我在它们之间显式转换?
例如:
public class Mammal
{
}
public class Dog : Mammal
{
}
...
Mammal foo = new Dog(); // Invalid, wants an explicit cast
Mammal bar = (Mammal)new Dog(); // This one works
我只是好奇这个限制背后的原因。
【问题讨论】:
-
不应该要求显式转换,当我测试你的代码时,第一个版本工作得很好。您能否发布更完整的示例?
-
我想知道当这个问题暗示向上转换不能自动工作时,谁会投票赞成。
-
投反对票,因为这段代码确实有效
-
从 Dog 到 Mammal 的隐式转换应该可以正常工作。你确定你的问题不是从哺乳动物转换为狗吗?
-
这是个提sscce.org的好地方
标签: c# class inheritance casting