C#のHybridDictionaryから指定したキーのエントリを削除する方法
HybridDictionaryから指定したキーのエントリを削除するには?
C#のHybridDictionary(System.Collections.Specialized名前空間)は、要素数が少ない間はListDictionaryとして動作し、要素が増えると自動的にHashtableへ切り替わる便利なコレクションです。特定のキーを持つエントリを削除するには、Remove()メソッドを使用します。
Remove()メソッドの主な特徴は次のとおりです。
- 引数に指定したキーと一致するエントリをコレクションから削除する
- 指定したキーが存在しない場合でも例外はスローされない
- 削除に成功するとCountプロパティの値が1減少する
例1:基本的な使い方
まずは、2つのHybridDictionaryを作成し、片方からキー「3」のエントリを削除するサンプルを見てみましょう。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary dict1 = new HybridDictionary();
dict1.Add("A", "書籍");
dict1.Add("B", "家電");
dict1.Add("C", "スマートウェアラブル");
dict1.Add("D", "ペット用品");
dict1.Add("E", "衣類");
dict1.Add("F", "履物");
Console.WriteLine("HybridDictionary1 の要素...");
foreach(DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
HybridDictionary dict2 = new HybridDictionary();
dict2.Add("1", "一");
dict2.Add("2", "二");
dict2.Add("3", "三");
dict2.Add("4", "四");
dict2.Add("5", "五");
dict2.Add("6", "六");
Console.WriteLine("\nHybridDictionary2 のキーと値のペア...");
IDictionaryEnumerator demoEnum = dict2.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
dict2.Remove("3");
Console.WriteLine("\nHybridDictionary2 のキーと値のペア...更新後");
demoEnum = dict2.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
出力
上記のコードを実行すると、次のような出力が得られます。キー「3」のエントリが正常に削除されていることが確認できます。
HybridDictionary1 の要素... A 書籍 B 家電 C スマートウェアラブル D ペット用品 E 衣類 F 履物 HybridDictionary2 のキーと値のペア... Key = 1, Value = 一 Key = 2, Value = 二 Key = 3, Value = 三 Key = 4, Value = 四 Key = 5, Value = 五 Key = 6, Value = 六 HybridDictionary2 のキーと値のペア...更新後 Key = 1, Value = 一 Key = 2, Value = 二 Key = 4, Value = 四 Key = 5, Value = 五 Key = 6, Value = 六
例2:複数のエントリを順番に削除する
続いて、Remove()メソッドを複数回呼び出して、エントリを順番に削除していく例を見てみましょう。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary dict = new HybridDictionary();
dict.Add("1", "マーケティング");
dict.Add("2", "購買");
dict.Add("3", "営業");
dict.Add("4", "情報システム");
dict.Add("5", "財務");
dict.Add("6", "オペレーション");
Console.WriteLine("HybridDictionary のキーと値のペア...");
IDictionaryEnumerator demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
dict.Remove("3");
Console.WriteLine("\nHybridDictionary のキーと値のペア...更新後");
demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
dict.Remove("4");
Console.WriteLine("\nHybridDictionary のキーと値のペア...更新後");
demoEnum = dict.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
出力
実行結果は次のとおりです。まずキー「3」が削除され、その後キー「4」も削除され、残りのエントリだけが表示されています。
HybridDictionary のキーと値のペア... Key = 1, Value = マーケティング Key = 2, Value = 購買 Key = 3, Value = 営業 Key = 4, Value = 情報システム Key = 5, Value = 財務 Key = 6, Value = オペレーション HybridDictionary のキーと値のペア...更新後 Key = 1, Value = マーケティング Key = 2, Value = 購買 Key = 4, Value = 情報システム Key = 5, Value = 財務 Key = 6, Value = オペレーション HybridDictionary のキーと値のペア...更新後 Key = 1, Value = マーケティング Key = 2, Value = 購買 Key = 5, Value = 財務 Key = 6, Value = オペレーション
まとめ
HybridDictionaryからエントリを削除するのは非常に簡単で、Remove(キー)を呼び出すだけで完了します。存在しないキーを指定しても例外は発生しないため、事前の存在チェック(Containsメソッド)は必須ではありませんが、処理結果を明確にしたい場合は組み合わせて使うとより安全なコードになります。
-
C#のOrderedDictionaryから指定したキーのエントリを削除する方法
C#のOrderedDictionaryから、指定したキーを持つエントリを削除するには、Remove()メソッドを使用します。このメソッドは引数に削除したいキーを渡すことで、そのキーに対応する要素をコレクションから取り除きます。Remove()メソッドの基本構文dict.Remove(キー);指定したキーが存在しない場合でも例外はスローされず、コレクションは変更されません。サンプルコード以下の例では、6つの要素を持つOrderedDictionaryを作成し、キー「E」のエントリを削除しています。using System; using System.Collections; using Sys
-
C#でStringDictionaryからすべてのエントリを削除する方法
C#のStringDictionaryからすべてのエントリ(キーと値のペア)を一括で削除するには、Clear()メソッドを使用します。このメソッドを呼び出すと、コレクション内の全要素が削除され、Countプロパティの値は0になります。なお、StringDictionaryではキーは自動的に小文字に変換されて格納される点にも注目してください。以下に具体的なコード例を示します。例1:2つのStringDictionaryを比較してClear()を確認するusing System; using System.Collections; using System.Collections.Speciali