C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 8 を表示中)
■8039 / )  Cloneの戻り値の型
□投稿者/ 一羽 二等兵(12回)-(2006/11/03(Fri) 00:04:54)

分類:[C#] 


分類:[C#] 

検索ワードが悪い為か、良い情報が見つからなかったのでポストします。
既出のような気もするのですが……、申し訳ありません。

実装クラスClassA、ClassB、ClassCの継承元である抽象クラス(AbstractClass)があります。
実装クラスすべてにIClonableを継承したかったため、AbstractClassにてIClonableを継承しました。そして、以下のように記述しました。
------------------------------------------------------
public abstract object Clone();
object IClonable.Clone()
{
  return this.Clone();
}
------------------------------------------------------
Clone()で行うべきことは各クラスで異なっているため、抽象クラスのClone()をabstractにして、ClassA〜ClassCでClone()をoverrideしようとしたのです。
しかし、(考えてみれば当たり前ですが)、この方法ではいずれのクラスもClone()で得られるものはobject型で、Clone()を呼び出した側で各クラスにキャストしなければなりません。

(1) ClassAのクローンがClassA型でないのはどうしても納得いきません。
(2) とはいえ、各実装クラスでIClonableを継承し、それぞれのクラスの型を返すClone()が実装するのは、スマートとは思えません。

これは(1)をぐっと堪えていくしかないのでしょうか。
「羊」のクローンを作ったら「生き物」が出来た、といった感じで、とても気持ち悪いのですが、そんなのにこだわるのは私ぐらいなのでしょうか……?

何か良い情報、あるいは、アドバイスをお願いしますm(_ _)m

0
返信 編集キー/


管理者用

- Child Tree -