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

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

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

クラス変数をクローンコピーする方法

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■83038 / inTopicNo.1)  クラス変数をクローンコピーする方法
  
□投稿者/ たま (1回)-(2017/02/28(Tue) 22:19:01)

分類:[.NET 全般] 


Public Class aaaa

Property Data1 As Single(,,)
Property Data2 As Integer

End Class

Sub

Dim test1 As New aaaa

Dim test2 = test1

test1.Data2 = 8

End Sub

というコードで、
test1の中のdata1やdata2の値を書き換えると
test2の中のdata1やdata2の値も同時に書き換わってしまいます。

test1の値をtest2にクローンコピーしたいのですが
どのようにすれば良いですか?


引用返信 編集キー/
■83039 / inTopicNo.2)  Re[1]: クラス変数をクローンコピーする方法
□投稿者/ Azulean (785回)-(2017/02/28(Tue) 22:47:49)
「ディープコピー」って言葉で呼ばれる話なのでキーワードとして覚えておいた方が良いですよ。

http://d.hatena.ne.jp/tekk/20100131/1264913887
引用返信 編集キー/
■83040 / inTopicNo.3)  Re[2]: クラス変数をクローンコピーする方法
□投稿者/ たま (2回)-(2017/02/28(Tue) 22:52:04)
ありがとうございます。
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.CompilerServices

を宣言した上で

Dim b As item = CType(a.DeepCopy, item)

' ジェネリック
b = DeepCopyHelper.DeepCopy(a)

を実行しようとしても
DeepCopyやDeepCopyHelper.DeepCopyが認識されず
使うことができません

どうすれば良いでしょうか?

引用返信 編集キー/
■83041 / inTopicNo.4)  Re[3]: クラス変数をクローンコピーする方法
□投稿者/ Azulean (786回)-(2017/02/28(Tue) 23:02:03)
No83040 (たま さん) に返信
> DeepCopyやDeepCopyHelper.DeepCopyが認識されず
> 使うことができません

.NET 標準のクラスではなく、その下の方に実装が書いてあると思いますが、そちらもコピーしていますか?
引用返信 編集キー/
■83042 / inTopicNo.5)  Re[4]: クラス変数をクローンコピーする方法
□投稿者/ たま (4回)-(2017/02/28(Tue) 23:05:57)
ありがとうございます。

ちなみに
ジェネリック版と拡張メソッド版の違いは何でしょうか?

引用返信 編集キー/
■83043 / inTopicNo.6)  Re[5]: クラス変数をクローンコピーする方法
□投稿者/ Azulean (787回)-(2017/02/28(Tue) 23:13:15)
No83042 (たま さん) に返信
> ジェネリック版と拡張メソッド版の違いは何でしょうか?

コードを読んで理解するべきところだと思います。
(私が書いたコードでもありませんし…)

// 戻り値に着目すればわかると思いますが、わからないという感じであればジェネリックの利点は何かを学んでみてください。
引用返信 編集キー/
■83056 / inTopicNo.7)  Re[6]: クラス変数をクローンコピーする方法
□投稿者/ たま (5回)-(2017/03/01(Wed) 21:54:26)
ありがとうございます。

理解できました。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ