C# classをコピーする

C#にてclassを変数のようにコピーしたいときがあります。ここでは、classをコピー(クローンの作成)出来るようにする方法を説明します。

インスタンス内のメンバを手動でコピーするか、ICloneableを実装してClone()を作成するか、2つの方法があり

また、 コピーをする際、シャローコピー (Shallow Copy) と、ディープコピー (Deep Copy) の2通りあります。

シャローコピーは、インスタンス内の参照型のメンバについては、参照先のインスタンスそのものがコピーされるのではなく、参照先を示すアドレスがコピーされます。

ディープコピーは、インスタンス内の参照型のメンバについてもインスタンスそのものがコピーされます。

ICloneable インターフェイスで、クローン生成する(基本的な使用方法です)

※参照型のメンバについては、参照先のインスタンスそのものがコピーされるのではなく、参照先を示すアドレスがコピーされます。

 

シャローコピーとディープコピー

※ICloneable でクローン生成するとシャローコピーになります。

 

コメントを残す