c# – 覆盖(cast)
发布时间:2020-12-15 06:14:44 所属栏目:百科 来源:网络整理
导读:如果我有一个基类和两个派生类,并且我想手工实现两个派生类之间的转换,有没有办法呢? (在C#中) abstract class AbsBase{ private int A; private int B; private int C; private int D;}class Imp_A : AbsBase{ private Listint E;}class Imp_B : AbsBase{
如果我有一个基类和两个派生类,并且我想手工实现两个派生类之间的转换,有没有办法呢? (在C#中)
abstract class AbsBase { private int A; private int B; private int C; private int D; } class Imp_A : AbsBase { private List<int> E; } class Imp_B : AbsBase { private int lastE; } 一般来说,我将从Imp_A – > Imp_B,我想要E列表中的最后一个值为’LastE’. 无论这是否在架构上是健全的(我无法描述整个应用程序并简明扼要)是否可能? 我要写一个转换器,除了我理解一个转换器将创建一个Imp_B类的新对象,我不需要它,因为’employee’只会是任何一个选项之一. -Devin 解决方法
您必须实施
explicit或
implicit运算符.
class Imp_A : AbsBase { public static explicit operator Imp_B(Imp_A a) { Imp_B b = new Imp_B(); // Do things with b return b; } } 现在您可以执行以下操作. Imp_A a = new Imp_A(); Imp_B b = (Imp_B) a; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |