実際には、辞書ロジック(ハッチ、バケットなど)を実行する際の固有の複雑さのために、線形検索よりも低速Dictionary<,>になることがよくあります。私のテストでは、カットオフ(より速くなり始める)は多くの場合約150要素です。また、一般的にテーブルの数は150よりはるかに少ないので、パフォーマンスの線形リストに満足しています。Dictionary<,>
(これは、「使用しないことを意味するわけではありませんDictionary<T>。これは、パフォーマンスがこの特定のユースケースの主な理由ではない可能性があることを意味します。一意のキーの適用とfoo ["bar"]モデルがそうである可能性があります)
これの一部は、ハッシュの取得の複雑さによるものです-特にGetHashCode()forstringは比較的高価です(ただし、int.GetHashCode()目がくらむほど高速です; -p)。
実際には、ほとんどの小さなデータセットでは、2つの違いに気付くことはありません。大きなデータがある場合は、明らかにその計画を立て、それに応じてコーディングする必要があります。
Dictionary<,>aとaのようなもののその他の違いは、List<>一意性のようなものです。aはDictionary<,>キーを複製できません(ただし、Lookup<,>.NET 3.5のaは複製できます)。