に値としてそれを挿入した後、私は次の問題を経験したが、それは一般的な問題である:は、オブジェクトを再利用するコレクション
は、私が持っていると言う:
- いくつかのクラス(例えば、
Cat
)、いくつかのメンバーを含む(例えば、公開Age
プロパティ)。 - 一部のキー(たとえば、
string
)とList<T>
の値(例:List<Cat>
)を持つHashTableです。私が意味Hashtable catDictionary = new Hashtable(); Cat cat1 = new Cat() { Age = 10 }; Cat cat2 = new Cat() { Age = 12 }; List<Cat> catList = new List<Cat>(); catList.Add(cat1); catList.Add(cat2); catDictionary["oldCat"] = catList; catList.Clear(); // This undesirably clears the list in HashTable["oldCat"] Cat cat3 = new Cat() { Age = 2 }; catList.Add(cat3); // Now the list in HashTable["oldCat"] references a young cat! catDictionary["youngCat"] = catList;
、
HashTable["oldCat"]
内List<cat>
への参照は、自身の得ることができます:
List<Cat>
の単一のインスタンスをインスタンス化し、それが望ましい方法になりように、それを再利用する方法はあります挿入されたList<Cat>
のコピーをコピーして、main
内のコピーから「切り離される」ようにしますか?
Cat
オブジェクトを再利用することについて同じ質問をすることができますが、List
を再利用すると、より便利に感じられます。
は、個々のアイテムを取得するために))(最終、それは)あなたが最初のを(使用する必要が同じリスト –
を参照される他に、新しいリストにCAT3を追加、または(テイク。または、Select/Whereを使用してリストを列挙します。 – jdweng