C#のListDictionaryが固定サイズかどうかを確認する方法
C#の ListDictionary コレクションが固定サイズ(IsFixedSize)を持っているかどうかを確認するには、IsFixedSize プロパティを使用します。このプロパティは、ListDictionary が固定サイズである場合に True を、要素の追加や削除が可能な場合は False を返します。
あわせて IsReadOnly プロパティ(読み取り専用かどうか)や IsSynchronized プロパティ(スレッドセーフかどうか)も同じように確認できます。
サンプルコード
以下は、ListDictionary のサイズが固定されているかどうかを確認する例です。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
ListDictionary dict1 = new ListDictionary();
dict1.Add("A", "Books");
dict1.Add("B", "Electronics");
dict1.Add("C", "Smart Wearables");
dict1.Add("D", "Pet Supplies");
dict1.Add("E", "Clothing");
dict1.Add("F", "Footwear");
Console.WriteLine("ListDictionary1 の要素...");
foreach(DictionaryEntry d in dict1) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("ListDictionary1 は固定サイズか? = "+dict1.IsFixedSize);
Console.WriteLine("ListDictionary1 は読み取り専用か? = "+dict1.IsReadOnly);
Console.WriteLine("ListDictionary1 は同期されているか = "+dict1.IsSynchronized);
Console.WriteLine("ListDictionary1 にキー M は存在するか? = "+dict1.Contains("M"));
ListDictionary dict2 = new ListDictionary();
dict2.Add("1", "One");
dict2.Add("2", "Two");
dict2.Add("3", "Three");
dict2.Add("4", "Four");
dict2.Add("5", "Five");
dict2.Add("6", "Six");
Console.WriteLine("\nListDictionary2 のキーと値のペア...");
IDictionaryEnumerator demoEnum = dict2.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
Console.WriteLine("ListDictionary2 は固定サイズか? = "+dict2.IsFixedSize);
Console.WriteLine("ListDictionary2 は読み取り専用か? = "+dict2.IsReadOnly);
Console.WriteLine("ListDictionary2 は同期されているか = "+dict2.IsSynchronized);
Console.WriteLine("ListDictionary2 にキー 5 は存在するか? = "+dict2.Contains("5"));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
ListDictionary1 の要素... A Books B Electronics C Smart Wearables D Pet Supplies E Clothing F Footwear ListDictionary1 は固定サイズか? = False ListDictionary1 は読み取り専用か? = False ListDictionary1 は同期されているか = False ListDictionary1 にキー M は存在するか? = False ListDictionary2 のキーと値のペア... Key = 1, Value = One Key = 2, Value = Two Key = 3, Value = Three Key = 4, Value = Four Key = 5, Value = Five Key = 6, Value = Six ListDictionary2 は固定サイズか? = False ListDictionary2 は読み取り専用か? = False ListDictionary2 は同期されているか = False ListDictionary2 にキー 5 は存在するか? = True
この結果から、new ListDictionary() で作成したインスタンスは固定サイズではなく、False が返されることがわかります。また、Contains() メソッドを使えば、指定したキーがコレクション内に存在するかどうかも確認できます。
別のサンプルコード
続いて、もう一つ例を見てみましょう。ここでは車種データを格納した ListDictionary を使用しています。
using System;
using System.Collections;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
ListDictionary dict = new ListDictionary();
dict.Add("1", "SUV");
dict.Add("2", "Sedan");
dict.Add("3", "Utility Vehicle");
dict.Add("4", "Compact Car");
dict.Add("5", "SUV");
dict.Add("6", "Sedan");
dict.Add("7", "Utility Vehicle");
dict.Add("8", "Compact Car");
dict.Add("9", "Crossover");
dict.Add("10", "Electric Car");
Console.WriteLine("ListDictionary の要素...");
foreach(DictionaryEntry d in dict) {
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nListDictionary は固定サイズか? = "+dict.IsFixedSize);
Console.WriteLine("ListDictionary は読み取り専用か? = "+dict.IsReadOnly);
Console.WriteLine("ListDictionary は同期されているか = "+dict.IsSynchronized);
Console.WriteLine("ListDictionary にキー K は存在するか? = "+dict.Contains("K"));
Console.WriteLine("ListDictionary にキー 9 は存在するか? = "+dict.Contains("9"));
}
}実行結果
このコードの出力は以下のとおりです。
ListDictionary の要素... 1 SUV 2 Sedan 3 Utility Vehicle 4 Compact Car 5 SUV 6 Sedan 7 Utility Vehicle 8 Compact Car 9 Crossover 10 Electric Car ListDictionary は固定サイズか? = False ListDictionary は読み取り専用か? = False ListDictionary は同期されているか = False ListDictionary にキー K は存在するか? = False ListDictionary にキー 9 は存在するか? = True
まとめ
IsFixedSize:ListDictionary が固定サイズかどうかを判定するIsReadOnly:読み取り専用かどうかを判定するIsSynchronized:スレッドセーフ(同期済み)かどうかを判定するContains(key):指定したキーが存在するかどうかを判定する
通常、ListDictionary を直接生成した場合は固定サイズでも読み取り専用でもないため、これらのプロパティはすべて False を返します。要素数が少ないコレクションにおいて、ListDictionary は効率的に動作する軽量な辞書型コレクションとして活用できます。
-
C#でリストが空かどうかを確認する方法【Anyメソッドの使い方】
C#でリストが空かどうかを確認するには?C#でList<T>が空かどうかを確認するには、LINQのAnyメソッドを使用するのが一般的です。Anyメソッドは、シーケンスに要素が1つでも含まれていればtrueを返し、空の場合はfalseを返します。この結果を否定演算子!で反転させることで、リストが空かどうかを簡単に判定できます。リストの作成まず、確認対象となるリストを作成しましょう。var subjects = new List<string>(); subjects.Add("Maths"); subjects.Add("Java"
-
Pythonで文字列にm個の連続した1または0が含まれているかを判定する方法
2進数のみで構成された文字列 s と整数値 m が与えられたとき、その文字列の中に m個連続した「1」 または m個連続した「0」 が含まれているかどうかを判定する問題を考えてみましょう。たとえば、入力が s = 1110111000111、m = 3 の場合、「000」という3つ連続した0や「111」という3つ連続した1が存在するため、出力は True になります。解決のアプローチこの問題は、文字列を先頭から順に走査しながら、連続する「0」と「1」の出現回数をそれぞれカウントすることで解決できます。具体的には以下の手順に従います。str_size := 文字列 s の長さcount_0 :=