- - PR -
クローンメソッドについて。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-10-01 14:15
C#にて、TreeViewを使用しました。
Nodeに対してはTreeNodeではなく、TreeNodeを継承したTreeNode2を設定しました。 それにより複数階層のツリーを作成しました。 ツリーのオブジェクトを作成し、それをコピーすると考えた場合、 this.Nodes[0].Clone()にて、オブジェクトが取得できます。(添え字0がrootツリー) Clone()メソッドは、対象のノードオブジェクトに従属するノードを一緒に複製してくれます。 しかし、今回TreeNode2で作成を行っています。 (TreeNode2)this.Nodes[0].Clone() にて取得を行った場合、this.Nodes[0]のノードはTreeNode2型になりますが、 this.Nodes[0]にぶら下がっているノードはTreeNode型で複製されてしまいます。 すべてのノードをTreeNode2で取得したい場合どのような方法があるのでしょうか? |
|
投稿日時: 2008-10-01 14:44
.NET 3.5(というか 2.0 SP1)で試したところ、子孫ノードまできっちり TreeNode2 でクローンしてくれましたよ?
|
|
投稿日時: 2008-10-01 16:18
複製という意味がちょっと曖昧なので、勘違いしているかもしれませんが・・・。
TreeNode2で追加した属性(フィールド)が複製(値のコピー)されていないと いう意味ならば、TreeNode2でCloneメソッドをオーバーライドして 追加したフィールドの値をコピーするコードを書かないとダメですよ。 |
|
投稿日時: 2008-10-01 19:25
Hongliang様、からあげ様。
ありがとうございました。 私の意図していたことは、からあげ様が仰っていた内容そのものでした。 説明通り、Cloneメソッドのオーバーライドで簡単に実現できました。 危うく、全ノードを舐めて一つづつコピーをするというとんでもないコードを書くところでした。 ありがとうございました。 |
1