インデクサーを使用できます。インデクサーは、最初にバイナリ検索を使用してキーに対応するインデックスを検索し、次にこのインデックスを使用して既存の項目を置き換えることにより、内部的に最適な方法でこれを行います。それ以外の場合は、既に計算されたインデックスを考慮して、新しい項目が追加されます。
list["foo"] = value;
キーが既に存在するかどうかに関係なく、例外はスローされません。
更新:
新しい値が古い値と同じである場合、古い値を置き換えると、何もしないのと同じ効果があります。
二分探索が行われることに注意してください。これは、1000 個のアイテムの中からアイテムを見つけるのに約 10 ステップかかることを意味します。log2(1000) ~= 10
. したがって、余分な検索を行っても、速度に大きな影響はありません。1,000,000 個のアイテムを検索しても、この値は 2 倍になります (~ 20 ステップ)。
ただし、インデクサーを介して値を設定すると、いずれの場合も 1 回の検索しか実行されません。Reflector を使用してコードを調べたところ、これを確認できます。