c# – 覆盖(cast)

前端之家收集整理的这篇文章主要介绍了c# – 覆盖(cast)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个基类和两个派生类,并且我想手工实现两个派生类之间的转换,有没有办法呢? (在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

解决方法

您必须实施 explicitimplicit运算符.
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;

猜你在找的C#相关文章