GetStringComparer拡張メソッドで取得したStringComparerをDictionaryのコンストラクタに渡すことにより、CompareOptionsを使用したキーの比較を行うことができます。
例として、CompareOptions.IgnoreKanaType/IgnoreWidthを使って、キーのひらがなとカタカナの違い/全角と半角の違いを無視するDictionary<string, string>を作成するには次のようにします。
CompareOptionsを使用してキーのひらがなとカタカナの違い無視するDictionaryを作成する .NET Framework 4.7.1
using System;
using System.Collections.Generic;
using System.Globalization;
class Sample {
static void Main()
{
// ひらがな・カタカナの違いを無視するDictionaryを作成する
var dict = new Dictionary<string, string>(
// CultureInfo.InvariantCultureのCompareInfoをベースに、CompareOptions.IgnoreKanaTypeを指定して
// ひらがな・カタカナの違いを無視するStringComparerを取得する
CultureInfo.InvariantCulture.CompareInfo.GetStringComparer(CompareOptions.IgnoreKanaType)
);
dict["ほげ"] = "hoge";
dict["ぴよ"] = "piyo";
dict["ふが"] = "fuga";
dict["ピヨ"] = "PIYO"; // ひらがな・カタカナの違いは無視されるため、キー"ぴよ"の値が上書きされる
foreach (var p in dict) {
Console.WriteLine("{0} => {1}", p.Key, p.Value);
}
Console.WriteLine(dict.ContainsKey("ピヨ"));
}
}
実行結果
ほげ => hoge ぴよ => PIYO ふが => fuga True
Dictionaryとキー比較のカスタマイズについてはジェネリックコレクション(2) Dictionary §.キー比較のカスタマイズ(大文字小文字の違いの無視)を参照してください。