【发布时间】:2017-07-13 18:43:16
【问题描述】:
我有一个基类和派生类,如下所示
public class BaseClass
{
public int No { set; get; }
}
public class Derived : BaseClass
{
public string Name { set; get; }
}
当我创建基类的实例并希望将其向下转换为派生类时,它返回 InvalidCastOperation。
class Program
{
static void Main( string[] args )
{
BaseClass bas = new BaseClass();
Derived derived = (Derived)bas; // invalid cast operation. why?
System.Console.WriteLine();
}
}
我想知道为什么它不起作用?是实现此请求的解决方案吗?
【问题讨论】:
-
这应该叫upcasting。
-
所有 Derived 都是 BaseClass 但并非所有 BaseClass 都是 Derived
-
您正在初始化基类并尝试将其转换为派生类。基类没有关于派生类的任何信息,也没有与派生类相关的属性。所以做不到。派生类可以转换为基类,但反之亦然。如果您在此处解释您要实现的目标会更好。
标签: c#