Enumerable.Repeat関数について質問があります。Enumerable.Repeat参照型オブジェクトの初期化
私はクラスがあります場合:
class A
{
//code
}
そして私は、その型のオブジェクトの配列を作成します:
A [] arr = new A[50];
そして次、私が列挙を呼び出して、それらのオブジェクトを初期化したいと思うでしょう。繰り返し:
arr = Enumerable.Repeat(new A(), 50);
これらのオブジェクトのメモリ内のアドレスは同じですか? 私はそのように例えば、彼らのハッシュコードをチェックしてみてください場合:
bool theSameHashCode = questions[0].GetHashCode() == questions[1].GetHashCode();
これが本当の私を返し、私は1つのオブジェクトのプロパティを変更する場合は、他のすべてのオブジェクトは、あまりにもそれを変更します。
私の質問です:それは正しく、参照型オブジェクトを初期化する方法ですか?そうでない場合は、より良い方法は何ですか?
これは奇妙です。私はEnumerable.Repeatを使用してオブジェクトを何十回もコピーします(手動で値をコピーする必要はありません)。次に、興味のあるプロパティを編集して、完璧に動作します。だから、あなたが "1つのオブジェクト"を意味するかどうかは分かりません –
MSDNから: "1つの繰り返し値を含むシーケンスを生成します。" - おそらく、あなたは値の型を使っていたでしょう。その場合は、毎回コピーを取得します。 – Kapol
いいえ、彼らはPOCOとネストされたクラスの両方を持つEFエンティティです –