2017-08-22 19 views
0

これは、オブジェクトの値を保持する方法に関するものです。 私は1つのオブジェクトが"objData"私の主な結果を持っています。 objDataの結果を1変数に格納しています。参照型オブジェクトの値を保持したいc#

var result = objData; 

これ以降、objDataからいくつかのプロパティを削除しています。

var result1 = objData.remove(x=>x.something..); 

その後、私はの作成中にいくつかのプロパティを削除していた場合「結果」に同じ値を保持するどのような方法があり、それは参照型のオブジェクトだからが、それも更新され「結果」をチェックすると"result1"

+0

objDataにはリストがありますか? –

+0

@WillyDavidJr複数のプロパティを持つオブジェクトです! –

+0

'remove'メソッドを再定義して、それが適用されているオブジェクトのコピーを返すことはできますか? – nondestructive

答えて

1
var result = objData; 

これは、むしろそれは単に同じオブジェクトに対する第2の参照を作成し、objDataの値をコピーしません。したがって、resultまたはobjDataのいずれかで作成されたオブジェクトに対する変更は、両方で「認識」されます。

コピーを作成するには、オブジェクトの種類によって異なります。一部のオブジェクトが Cloneメソッドを実装し、いくつかは、自分自身のメソッドを実装しますが、ほとんどの場合、あなたは新しいインスタンスを作成し、すべての状態をコピーする必要があります:もちろん

var result = new TheType { 
    Prop1 = source.Prop1, 
    Prop2 = source.Prop2, 
… 
}; 

多くの種類のために、このようなクローンはなしになりますセンス(例えば、TCPソケットを管理するオブジェクト)。これは深いクローンであるかどうか


- オブジェクトが再帰的か、単にトップレベルをクローン化する - タイプによって異なります。

関連する問題