System.Collections.Specialized.StringCollectionを使用できる可能性がありますが、Dictionaryほどパフォーマンスが高く、文字列にキーをキャストする必要があるかどうかはわかりません。
Addメソッドに常に何かを含めるという要件が煩わしい場合は、独自の汎用キークラスを作成できます。これは、基礎となる.Net実装が見つかったときにそれをより適切に適合させることができます。たとえば、VB.Netを想定すると、次のようになります。
Public Class KeyDictionary(Of T)
Inherits Dictionary(Of T, Boolean)
Public Overloads Sub Add(key As T)
MyBase.Add(key, False)
End Sub
End Class
次に、インスタンスを宣言して値を追加します。
Dim cKeys As New KeyDictionary(Of Integer)
If Not cKeys.ContainsKey(1) Then
cKeys.Add(1)
End If
そして、C#では:
public class KeyDictionary<T> : Dictionary<T, bool>
{
public void Add(T key)
{
base.Add(key, false);
}
}
インスタンスを宣言して値を追加するには:
var cKeys = new KeyDictionary<int>();
if (!(cKeys.ContainsKey(1)))
{
cKeys.Add(1);
}