-
C#で文字列のハッシュコード(HashCode)を取得する方法
C#で文字列のハッシュコードを取得するには、GetHashCode()メソッドを使用します。このメソッドは、文字列の内容に基づいて整数値(int型)のハッシュコードを返します。ハッシュコードは、辞書(Dictionary)やハッシュセット(HashSet)などのハッシュベースのコレクションで、オブジェクトを高速に検索・比較するために利用されます。基本的な使い方以下の例では、2つの異なる文字列に対してGetHashCode()メソッドを呼び出し、それぞれのハッシュコードと等価性の判定結果を出力しています。using System; public class Demo {  
-
【C#】GetEnumerator()でHashSetを反復処理する列挙子(Enumerator)を取得する方法
C#でHashSetの各要素を順番に取り出す(反復処理する)ための列挙子(Enumerator)を取得するには、GetEnumerator()メソッドを使用します。この記事では、実際のコード例と実行結果をもとに、その基本的な使い方をわかりやすく解説します。 HashSet.GetEnumerator()メソッドの基本 GetEnumerator()は、HashSet<T>の要素を走査できるHashSet<T>.Enumerator構造体を返します。取得した列挙子に対して、次の2つのメンバーを組み合わせることで、要素を1つずつ処理できます。 MoveNext():次の
-
C#のListDictionaryに特定のキーが含まれているかどうかを確認する方法
C#のListDictionaryコレクションに特定のキーが存在するかどうかを確認するには、Contains()メソッドを使用します。このメソッドは、指定したキーがListDictionary内に存在する場合はtrueを、存在しない場合はfalseを返します。以下では、実際のコード例を使ってContains()メソッドの使い方を詳しく解説します。例1:Containsメソッドでキーの存在を確認するまずは2つのListDictionaryを作成し、そのうち片方に対してキー「5」が含まれているかどうかを確認してみましょう。using System; using System.Collections
-
C#のListDictionaryが固定サイズかどうかを確認する方法
C#の ListDictionary コレクションが固定サイズ(IsFixedSize)を持っているかどうかを確認するには、IsFixedSize プロパティを使用します。このプロパティは、ListDictionary が固定サイズである場合に True を、要素の追加や削除が可能な場合は False を返します。あわせて IsReadOnly プロパティ(読み取り専用かどうか)や IsSynchronized プロパティ(スレッドセーフかどうか)も同じように確認できます。サンプルコード以下は、ListDictionary のサイズが固定されているかどうかを確認する例です。using Syst
-
C#でSortedListオブジェクトが同期されているかどうかを確認する方法
C#のSortedListオブジェクトが同期されているかどうかを確認するには、IsSynchronizedプロパティを使用します。このプロパティは、SortedListへのアクセスがスレッドセーフ(同期済み)であれば True を、そうでなければ False を返します。 また、SortedList.Synchronized()メソッドを使うことで、既存のSortedListをラップした同期済み(スレッドセーフ)のラッパーを作成できます。 例1:Synchronizedメソッドで同期化した場合 using System; using System.Collections; public cl
-
C#でStringDictionaryが同期されているかどうかを確認する方法
C#の StringDictionary が同期(スレッドセーフ)されているかどうかを確認するには、IsSynchronized プロパティを使用します。このプロパティは、コレクションへのアクセスが同期されている場合は true、同期されていない場合は false を返します。通常の StringDictionary インスタンスは既定で同期されていないため、多くの場合 False が出力されます。それでは、具体的なサンプルコードを見ていきましょう。例1:IsSynchronizedプロパティの基本的な使い方using System; using System.Collections; usi
-
C#でArrayListが同期されている(スレッドセーフ)かどうかを確認する方法
C#でArrayListが同期されている(スレッドセーフである)かどうかを確認するには、IsSynchronizedプロパティを使用します。このプロパティは、ArrayListへのアクセスが同期されている場合はtrue、同期されていない場合はfalseを返します。なお、通常のArrayListは既定ではスレッドセーフではありません。マルチスレッド環境で安全に利用したい場合は、後述のArrayList.Synchronizedメソッドを使って同期ラッパーを作成する必要があります。例1:通常のArrayListの場合まず、同期されていない通常のArrayListでIsSynchronizedプロパ
-
C#でArrayListのサイズが固定されているかどうかを確認する方法
C#でArrayListのサイズが固定されているかどうかを確認するには、IsFixedSizeプロパティを使用します。このプロパティは、ArrayListが固定サイズの場合に「True」、可変サイズ(要素の追加・削除が可能)の場合に「False」を返します。以下に具体的なサンプルコードを示します。例1:通常のArrayListでIsFixedSizeを確認するusing System; using System.Collections; public class Demo { public static void Main(String[] args) {  
-
C#でArrayListの同期ラッパーを作成する方法
マルチスレッド環境でArrayListを安全に操作するには、同期(スレッドセーフ)ラッパーを作成する必要があります。C#では、静的メソッドArrayList.Synchronized()を使うことで、既存のArrayListをラップする同期ラッパーを簡単に取得できます。 まず、通常のArrayListがデフォルトでは同期されていないことを確認するサンプルコードを見てみましょう。 例1:通常のArrayListの同期状態を確認する using System; using System.Collections; public class Demo { public static void
-
C#でハッシュテーブルの同期ラッパーを作成する方法
C# の Hashtable は、既定の状態ではスレッドセーフではありません。マルチスレッド環境で安全にコレクションを操作したい場合は、静的メソッドである Hashtable.Synchronized() を使用して、元のコレクションを包む同期(スレッドセーフ)ラッパーを作成します。この記事では、実際のコード例をもとに、同期ラッパーの作成方法と IsSynchronized プロパティによる確認方法を解説します。 通常の Hashtable の動作を確認する まずは、同期化されていない通常の Hashtable を作成し、要素を追加した後、IsSynchronized プロパティの値を出力して
-
C#で初期容量を指定したArrayListを作成する方法
C#では、ArrayListのコンストラクタに整数値を渡すだけで、初期容量(Capacity)を指定できます。追加する要素数があらかじめわかっている場合は、初期容量を設定しておくことで内部配列の再割り当てが減り、パフォーマンスの向上が期待できます。 例1:異なる初期容量を持つ2つのArrayListを作成する 次の例では、初期容量「5」のArrayListと初期容量「10」のArrayListを作成し、それぞれの容量と格納されている要素を表示しています。さらに、Equals()メソッドによる等価比較や、RemoveRange()メソッドで範囲を指定して要素を削除した後の動作も確認しています。
-
C#で大文字と小文字を区別するHybridDictionaryクラスを作成する方法
C#のHybridDictionaryは、要素数が少ないうちはListDictionaryとして動作し、要素が増えると自動的にHashtableへ切り替わるコレクションクラスです。コンストラクタの引数にfalseを指定すると、大文字と小文字を区別する空のHybridDictionaryを作成できます。逆にtrueを指定した場合は、大文字と小文字が区別されなくなります。以下に、大文字と小文字を区別するHybridDictionaryを作成するサンプルコードを示します。コード例using System; using System.Collections; using System.Collecti
-
C#で大文字と小文字を区別する空のHybridDictionaryを作成する方法
C#のHybridDictionaryは、要素数が少ない間はListDictionaryとして高速に動作し、要素が増えると自動的にHashtableへ切り替わるコレクションクラスです。System.Collections.Specialized名前空間に属しています。 引数を指定しないコンストラクタnew HybridDictionary()で生成したインスタンスは、大文字と小文字を区別する辞書になります。以下のコード例でその挙動を確認してみましょう。 例1:空のHybridDictionaryを作成して要素を追加する using System; using System.Collection
-
C#でArrayListが読み取り専用かどうかを確認する方法
C#でArrayListが読み取り専用(ReadOnly)かどうかを確認するには、IsReadOnlyプロパティを使用します。このプロパティは、ArrayListへの書き込みが許可されているかどうかを示すブール値(true / false)を返します。 主な関連プロパティ IsReadOnly:ArrayListが読み取り専用かどうかを取得します IsSynchronized:ArrayListへのアクセスが同期されている(スレッドセーフである)かどうかを取得します IsFixedSize:ArrayListのサイズが固定されているかどうかを取得します 例1 以下のコードでは、通常のArr
-
C#でSortedListオブジェクトの指定したインデックスの値を取得する方法
C#のSortedListオブジェクトから、指定したインデックス位置にある値を取得するには、GetByIndexメソッドを使用します。このメソッドは、引数に0から始まるインデックス番号を渡すことで、その位置に格納されている値を返します。それでは、実際のコード例を見ていきましょう。サンプルコード1:文字列キーの場合using System; using System.Collections; public class Demo { public static void Main(String[] args) { SortedList list = new SortedList(
-
C#でSortedListオブジェクトの値を取得する方法
C#のSortedListオブジェクトに格納された値を取得するには、Valuesプロパティを使用します。同様に、キーを取得する場合はKeysプロパティが利用できます。以下に具体的なコード例を示します。例1:数値キーのSortedListから値を取得するusing System; using System.Collections; public class Demo { public static void Main(String[] args) { SortedList list =
-
C#でSortedSetと指定されたコレクションに同じ要素が含まれているか確認する方法
C#では、SetEqualsメソッドを使用することで、SortedSetと指定されたコレクションに同じ要素が含まれているかどうかを簡単に確認できます。このメソッドは、両者に含まれる要素が完全に一致する場合にtrueを返し、一致しない場合はfalseを返します。サンプルコード1:異なる要素を持つ場合まず、異なる要素を持つ2つのSortedSetを比較する例を見てみましょう。using System; using System.Collections.Generic; public class Demo { public static void Main() { SortedS
-
C#のOrderedDictionaryでIDictionaryEnumeratorオブジェクトを取得する方法
C#のOrderedDictionaryクラスでは、GetEnumerator()メソッドを呼び出すことで、IDictionaryEnumeratorオブジェクトを取得できます。この列挙子を使うと、コレクションに格納されたキーと値のペアを、追加した順序どおりに1つずつ取り出して処理することが可能です。IDictionaryEnumeratorインターフェースは、通常のIEnumeratorに加えて、現在の要素のKeyプロパティとValueプロパティにアクセスできる点が特徴です。これにより、foreach文を使わずにwhileループとMoveNext()メソッドを組み合わせて、辞書の内容を柔軟に
-
C#でスタックの先頭(一番上)の要素を取得する方法【Peek()メソッド】
C#のStack<T>クラスでは、スタックの一番上(先頭)にあるオブジェクトを取得するためにPeek()メソッドを使用します。このメソッドは、スタックから要素を削除することなく、最上位の要素だけを返します。 Peek()メソッドとは Peek()は、スタックの先頭にある要素を参照するためのメソッドです。似たメソッドにPop()がありますが、こちらは先頭の要素を取り出して削除するのに対し、Peek()は要素を削除せずにそのまま残します。スタックの中身を確認したいだけの場合は、Peek()を使うのが適切です。 コード例1:文字列のスタック using System; using Sys
-
C#でBitArrayが読み取り専用かどうかを確認する方法
C#のBitArrayクラスには、コレクションが読み取り専用かどうかを判定するためのIsReadOnlyプロパティが用意されています。このプロパティは、BitArrayへの要素の追加や変更が許可されているかどうかを示すブール値(true / false)を返します。通常、新しく作成したBitArrayは書き込み可能なため、IsReadOnlyは「False」を返します。それでは、実際のコード例を見ていきましょう。サンプルコード1using System; using System.Collections; public class Demo { public static void M