辞書のすべての値を変更する必要があります。通常、ディクショナリを列挙しながらディクショナリを変更すると、例外がスローされます。この問題を回避するにはさまざまな方法がありますが、私が見てきた答えのすべてには、一時記憶域の割り当てが含まれています。例については、Editing dictionary values in a foreach loopを参照してください。割り当てなしで辞書の値を変更する
メモリを割り当てずにすべての値を変更したいと思います。カスタム構造体の列挙子を書くと、辞書のバージョンを無視した値は問題ありませんが、辞書の重要なメンバーはすべてプライベートなので、これは不可能です。
「ConcurrentDictionary」を使用しない理由は何ですか?あなたの問題は本当に同時アクセスまたはメモリ割り当ての例外ですか? –
あなたが提供したリンクは、辞書のKeys.ToList()を呼び出してそのリストを反復処理しても機能するはずだということを示しています...いいえ? –
@IanMercer:質問は非常に不明ですが。私はOPが指している例外は、それを反復しながらコレクションを変更するものだと信じています。これは同時アクセスの問題ではありません。 –