基本クラスと2つの派生クラスがあり、2つの派生クラスの間でキャストを手作業で実装したい場合、それを行う方法はありますか? (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」になりたいです。 また、3つ以上の実装クラス(給与、時間別、コンサルタント、従業員など)がある場合はどうでしょうか?
構造的に健全かどうかにかかわらず(アプリケーション全体を簡潔に記述することはできません)出来ますか?
コンバーターを書くつもりだったのですが、コンバーターはImp_Bクラスの新しいオブジェクトを作成します。これは、「従業員」はいずれかのオプションの1つにすぎないためです時間。あなたはIMPAを「治療」するため
class Imp_B : Imp_A
{
private int A;
private int B;
private int C;
private int D;
private int lastE { get { return this.E.Last(); } }
}
あなたが実際にIMPBから派生することができない場合は、それは不可能です:
-Devin
これは本当にまったく新しいImp_Bオブジェクトを作成することに注意してください。 – mquander
これは完璧です。しかし、mquanderが言及しているように、それは避けられないと私が信じる新しい目的です。しかし、これは、たとえ私が(Imp_Aとして)再び使用することはないとしても、 "a"は範囲外になるまでGCしないだろうか? – DevinB
はい、範囲外になり、参照を保持しなくなった場合にのみ収集されます。 –