【发布时间】:2019-07-26 22:21:33
【问题描述】:
我正在尝试让以下代码运行。我想将 A 类的对象转换为 B 类的对象,但出现错误。理论上,A 是 B 的一部分,所以我看不出,为什么这不起作用。
我知道,这个演员表确实意味着丢失一些数据,但这正是我想要的。 有没有办法让它运行?
public class Program
{
public static void Main()
{
var b = new B();
var a = (A)b; //Error: Cannot convert type
}
}
public interface IA{}
public interface IB : IA{}
public class A : IA{}
public class B : IB{}
【问题讨论】:
-
IA是B的一部分,而不是A。改为var a = (IA)b; -
仅供参考:“我知道,这个演员表确实意味着丢失一些数据”。对于引用类型(即对象;not 值类型,如 int、float 等),强制转换通常不会导致数据。例外的是实现(显式/隐式)转换运算符的类,其自定义实现会导致“数据丢失”(可以这么说)......
标签: c# types interface casting type-conversion