私はList<Character> citizens
です。 市民が最も重要な様々な特性を持っている:基本クラス参照を子クラスにコピーするときに、問題がありますか? (ダウンキャスティング)
public string firstname;
public Dictionary<Character, Relationship> relationships { get; set; }
...
市民は、物事になることができます彼らはを作成した後、Trader : Character
のように。
市民の私のリストでは、キャラクターのリファレンスをトレーダーに置き換えたいと思っています。
ダウンキャスティングに関する回答を読み、理解しています。
public Trader(Character c)
{
firstname = c.firstname;
relationships = c.relationships;
...
}
をそして私は古い文字への参照を交換して、この派手な新しいトレーダーを使用したい:だから私は、コンストラクタのアプローチを行います
citizens.Remove(old);
citizens.Add(fancyTrader);
私に関するどのような関係辞書への参照ですこれは、古いCharacter
オブジェクトが永遠にぶら下がってしまうだけではなく、メモリ内にこの男のコピーが2つあり、古いものがガベージコレクションされることはありませんか?
私はこれらの市民が何万人もいるので心配しています。
この分類は、市民の代わりに市民の財産でもあります。クローンで型を変換すると、古くなった参照で作業することになります。 –