それが私が持っているものです:
class A
{
// The uniqueness of instance must be detected by this property
public string Key { get; set; }
// There are other properties
}
var set = HashSet<A>()
私の一般的な目的は次のとおりです。
set
コレクション内のインスタンスの ID をKey
プロパティ値で提供するContain 操作でこのコレクションをできるだけ速く動作させるため
次の質問への回答は、この目的を達成するのに役立つ場合があります。
- インスタンスの一意性を決定する必要があるようなメソッドを実行するために使用されるもの: GetHashCode() または
Contains
IEquatable ?Add
ほとんどの場合、HashSet は検索が非常に高速であると宣言されているので、GetHashCode() です。 - デフォルト
String.GetHashCode()
の実装では、2 つの異なる文字列のハッシュの一意性が保証されていないため、パフォーマンスを考慮して一意性を提供するにはどうすればよいですか? - IEquatable は HashSet でまったく使用されていますか?
彼のコレクションは実行時にのみ作成および破棄され、データベースには保存されないことに注意してください