【C#】StringDictionaryに特定のキーが存在するかどうかをContainsKeyで確認する方法
C#の StringDictionary クラスにおいて、特定のキーがコレクション内に存在するかどうかを確認するには、ContainsKey() メソッドを使用します。このメソッドは、指定したキーが存在すれば true、存在しなければ false を返します。
ContainsKeyメソッドの基本構文
public virtual bool ContainsKey(string key);
- key: 存在を確認したいキー(文字列)を指定します。
- 戻り値: キーが見つかった場合は
true、見つからない場合はfalse。
なお、StringDictionary のキーは大文字・小文字を区別せず、内部的に小文字に変換して扱われる点に注意してください。
サンプルコード1
以下は、StringDictionary に特定のキーが含まれているかどうかを確認する例です。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main(){
StringDictionary strDict1 = new StringDictionary();
strDict1.Add("A", "John");
strDict1.Add("B", "Andy");
strDict1.Add("C", "Tim");
strDict1.Add("D", "Ryan");
strDict1.Add("E", "Kevin");
strDict1.Add("F", "Katie");
strDict1.Add("G", "Brad");
Console.WriteLine("StringDictionary1 elements...");
foreach(DictionaryEntry d in strDict1){
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Does StringDictionary1 has key G? "+strDict1.ContainsKey("G"));
StringDictionary strDict2 = new StringDictionary();
strDict2.Add("A", "John");
strDict2.Add("B", "Andy");
strDict2.Add("C", "Tim");
strDict2.Add("D", "Ryan");
strDict2.Add("E", "Kevin");
strDict2.Add("F", "Katie");
strDict2.Add("G", "Brad");
Console.WriteLine("\nStringDictionary2 elements...");
foreach(DictionaryEntry d in strDict2){
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = "+strDict2.Equals(strDict1));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
StringDictionary1 elements... a John b Andy c Tim d Ryan e Kevin f Katie g Brad Does StringDictionary1 has key G? True StringDictionary2 elements... a John b Andy c Tim d Ryan e Kevin f Katie g Brad Is Dictionary2 equal to Dictionary1? = False
出力結果を見ると、追加時には大文字の「A」〜「G」をキーとして登録していますが、表示される際にはすべて小文字になっていることがわかります。これは StringDictionary がキーを小文字に変換して管理しているためです。
サンプルコード2
続いて、別のキーに対しても ContainsKey() を使って確認する例を見てみましょう。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main(){
StringDictionary strDict1 = new StringDictionary();
strDict1.Add("A", "John");
strDict1.Add("B", "Andy");
strDict1.Add("C", "Tim");
strDict1.Add("D", "Ryan");
strDict1.Add("E", "Kevin");
strDict1.Add("F", "Katie");
strDict1.Add("G", "Brad");
Console.WriteLine("StringDictionary1 elements...");
foreach(DictionaryEntry d in strDict1){
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("Does StringDictionary1 has key G? "+strDict1.ContainsKey("G"));
StringDictionary strDict2 = new StringDictionary();
strDict2.Add("A", "John");
strDict2.Add("B", "Andy");
strDict2.Add("C", "Tim");
strDict2.Add("D", "Ryan");
strDict2.Add("E", "Kevin");
strDict2.Add("F", "Katie");
strDict2.Add("G", "Brad");
Console.WriteLine("\nStringDictionary2 elements...");
foreach(DictionaryEntry d in strDict2){
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nIs Dictionary2 equal to Dictionary1? = "+strDict2.Equals(strDict1));
Console.WriteLine("Does StringDictionary2 has key B? "+strDict2.ContainsKey("B"));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
StringDictionary1 elements... a John b Andy c Tim d Ryan e Kevin f Katie g Brad Does StringDictionary1 has key G? True StringDictionary2 elements... a John b Andy c Tim d Ryan e Kevin f Katie g Brad Is Dictionary2 equal to Dictionary1? = False Does StringDictionary2 has key B? True
まとめ
StringDictionary で特定のキーの存在を確認する場合は、ContainsKey() メソッドを使うのが最も簡単です。また、類似メソッドとして値の存在を確認する ContainsValue() メソッドも用意されているため、用途に応じて使い分けるとよいでしょう。
-
C#のCollectionに要素が含まれているかどうかを確認する方法
C#でコレクション(Collection)内に特定の要素が存在するかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がコレクション内に見つかった場合は true、見つからなかった場合は false を返します。以下に具体的なコード例を示します。例1:整数のコレクションの場合using System; using System.Collections.ObjectModel; public class Demo { public static void Main(){  
-
C#でHashSetに指定された要素が含まれているか確認する方法
C#のHashSet<T>に特定の要素が含まれているかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定した要素がHashSet内に存在する場合はtrue、存在しない場合はfalseを返します。Contains()メソッドの基本構文public bool Contains (T item);引数には検索対象の要素を渡します。HashSetはハッシュテーブルを基盤としているため、要素の検索はO(1)の計算量で実行でき、非常に高速です。例1:数値型のHashSetでContains()を使う以下は、int型のHashSetに対してContains()メ