- PR -

継承クラスへデータをコピーするには

1
投稿者投稿内容
チャオ
会議室デビュー日: 2005/03/28
投稿数: 4
投稿日時: 2005-05-12 19:59
C#の勉強をしています。

public class Ctest1
{
  public int a;
  public int b;
}

public class Ctest2 : Ctest1
{
  public int c;
}
とCtest1からCtest2を継承したクラスを作り
Ctest1 test1 = new Ctest1();
test1.a = 1; test1.b = 2;
と格納した値を
Ctest2 test2 = new Ctest2();
の test2のaとbにコピーしたいのですが、実際には変数が多いので
test2 = test1 のように一回でコピーするにはどうすればよいのでしょうか。

よろしくお願いいたします。

[ メッセージ編集済み 編集者: チャオ 編集日時 2005-05-12 20:33 ]
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2005-05-12 21:28
Deep Copy 用のメソッドを組み込むのはいかがですか?
_________________
IEEE-CSDP 2004-2007
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-05-13 09:23
引用:

test2 = test1 のように一回でコピーするにはどうすればよいのでしょうか。


「シャローコピー」 と 「ディープコピー」 を調べてみてください。


[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-08-18 09:20 ]
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-05-13 09:35
どもです。がると申します。
んっと。勉強中との事ですので、ヒント+α程度のものを。

コード:
public class Ctest1
{
 public int a;
 public int b;

 public deep_copy(Ctest1 base_obj) {
  //
  }

}

public class Ctest2 : Ctest1
{
 public int c;
}


こんな感じでしょうか?
使い方としては

[/code]
Ctest1 test1 = new Ctest1();
test1.a = 1; test1.b = 2;
Ctest2 test2 = new Ctest2();
test1.deep_copy(test2);
[/code]
ポイントは
・deep copyのメソッドは親クラスの方に作る
ところです。

質問:
なぜでしょう?

頑張ってください ^^
1

スキルアップ/キャリアアップ(JOB@IT)