【发布时间】:2012-06-06 20:43:47
【问题描述】:
public class Derived : BaseClass
{
public Derived(string name) : base(name) {}
public static implicit operator BaseClass(Derived derived)
{
return new BaseClass(derived.ColorHex);
}
public static implicit operator Derived(BaseClass baseclass)
{
return new Derived(baseclass.name);
}
}
这行不通。为什么不允许?
我可以潜在地编写必要的逻辑以使其有意义,尤其是在从基础转换为派生逻辑时。
编辑:更改了问题的标题
【问题讨论】:
-
因为转换已经存在,你不能增加它。
-
当您想要对
BaseClass类型的对象进行一般引用时会发生什么?如果您按照定义对BaseClass有隐式运算符,那么您实际上将“切片”对象并丢失任何运行时信息。您将无法调用任何被覆盖的虚拟方法(如果有的话)。