GetStringComparer拡張メソッドで取得したStringComparerをDictionaryのコンストラクタに渡すことにより、CompareOptionsを使用したキーの比較を行うことができます。
例として、CompareOptions.IgnoreKanaType/IgnoreWidthを使って、キーのひらがなとカタカナの違い/全角と半角の違いを無視するDictionary<string, string>を作成するには次のようにします。
CompareOptionsを使用してキーの全角半角の違い無視するDictionaryを作成する .NET Framework 4.7.1
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Class Sample
Shared Sub Main()
' 独自に実装したIEqualityComparer(Of String)を指定してDictionaryを作成する
' (CultureInfo.InvariantCultureのCompareInfoをベースに、CompareOptions.IgnoreWidthを指定して
' 全角・半角の違いを無視するStringComparerを取得する)
Dim dict As New Dictionary(Of String, String)(CultureInfo.InvariantCulture.CompareInfo.GetStringComparer(CompareOptions.IgnoreWidth))
dict("hoge") = "ほげ"
dict("piyo") = "ぴよ"
dict("42") = "よんじゅうに"
' 全角半角の違いは無視されるため、キー"piyo", "42"の値が上書きされる
dict("piyo") = "ピヨ"
dict("42") = "よんじゅうに"
For Each p As KeyValuePair(Of String, String) In dict
Console.WriteLine("{0} => {1}", p.Key, p.Value)
Next
Console.WriteLine(dict.ContainsKey("piyo"))
End Sub
End Class
実行結果
hoge => ほげ piyo => ピヨ 42 => よんじゅうに True
Dictionaryとキー比較のカスタマイズについてはジェネリックコレクション(2) Dictionary §.キー比較のカスタマイズ(大文字小文字の違いの無視)を参照してください。