Dictionary クラスのキーに string を使用するときには、デフォルトでは大文字・小文字は区別されますが、ここでは、大文字・小文字を区別をしないで、同一のキーとして扱う Dictionary のサンプルコードを掲載しています。
スポンサーリンク
Dictionary キー:大文字・小文字の区別あり
以下のように Dictionary のキーはデフォルトで、大文字・小文字を区別しますので、下記のサンプルコードはどちらも正常にデータが追加されます。
VB.NET
Dim d As New Dictionary(Of String, String)()
d.Add("key", "1") ' 正常に追加される
d.Add("KEY", "2") ' 正常に追加される
C#
Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("key", "ショーンケー"); // 正常に追加される
d.Add("KEY", "オグラケー"); // 正常に追加される
Dictionary キー:大文字・小文字の区別なし
では、次に key と KEY は同一のキーとして判断するサンプルコードです。Dictionary 生成時にパラメータを与えるだけですので、お手軽です。
例えば Windows では、ファイル名は大文字・小文字の区別はされませんので、そのようなデータをキーとして扱うときに便利かもしれません。
VB.NET
' 大文字・小文字の区別を行わないように Dictionary を生成
Dim d As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase)
d.Add("test", "1")
' すでに同一のキーが存在すると判断される
If (d.ContainsKey("TEst")) Then
Console.WriteLine("exists")
End If
' ★ この位置で例外が発生します
d.Add("TEST", "2")
' System.ArgumentException はハンドルされませんでした。
' Message = 同一のキーを含む項目が既に追加されています。
C#
// 大文字・小文字の区別を行わないように Dictionary を生成
Dictionary<string, string> d = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
d.Add("test", "1");
// すでに同一のキーが存在すると判断される
if (d.ContainsKey("TEst"))
{
Console.WriteLine("exists");
}
// ★ この位置で例外が発生します
d.Add("TEST", "2");