HashSet・SortedSetに特定の要素が含まれているかどうかを調べるにはContainsメソッドを使うことができます。 このほかに、.NET Standard 2.1/.NET Framework 4.7.2/.NET Core 2.0以降では、TryGetValueメソッドを使うこともできます。

TryGetValueメソッドでは、HashSet・SortedSetに指定した値の要素があるかどうかを調べ、ある場合はその値を取得することができます。

ContainsメソッドとTryGetValueメソッドは、どちらもHashSet・SortedSet内に指定した値の要素があるかどうかを調べるという点では同じです。 一方TryGetValueメソッドは、要素がある場合には実際にHashSet・SortedSet内に格納されている値を取得できる点が異なります。

TryGetValueメソッドは、IEqualtyComparer<T>を指定してHashSetを構築した場合、またはIComparer<T>を指定してSortedSetを構築した場合などにおいて、単に値が含まれているかどうかだけでなく、実際に格納されている値を知りたい場合に有効に機能します。

例えば、大文字小文字の違いを無視するHashSet・SortedSetを構築したときに、HashSet・SortedSetにALICEという値が含まれているか調べつつ、実際に格納されている値が何なのか(Aliceまたはalice、もしくはそれ以外なのか)を知りたい、といった場合には、ContainsメソッドではなくTryGetValueメソッドを使うことができます。

TryGetValueメソッドでSortedSetに指定した値の要素があるかどうか調べ、実際に格納されている値を取得する
using System;
using System.Collections.Generic;

class Sample {
  static void Main()
  {
    // 大文字小文字の違いを無視するSortedSet
    var caseInsensitiveSet = new SortedSet<string>(StringComparer.OrdinalIgnoreCase) {
      "Alice", "Bob", "Charlie", "Dave", "Eve"
    };

    // 文字列"ALICE"が含まれているかどうか調べる
    // 同時にSortedSetに格納されている実際の綴りも取得する
    var alice = "ALICE";

    if (caseInsensitiveSet.TryGetValue(alice, out alice))
      Console.WriteLine(alice);

    // 文字列"cHArLIe"が含まれているかどうか調べる
    // 同時にSortedSetに格納されている実際の綴りも取得する
    var charlie = "cHArLIe";

    if (caseInsensitiveSet.TryGetValue(charlie, out charlie))
      Console.WriteLine(charlie);
  }
}
実行結果
Alice
Charlie

HashSetにIEqualtyComparer<T>を指定して構築する例については§.HashSetでの等価性比較のカスタマイズ、SortedSetにIComparer<T>を指定して構築する例については§.SortedSetでの大小比較のカスタマイズを参照してください。