-
C#で配列への同期アクセスを実現する方法(SyncRootプロパティの使い方)
C#でマルチスレッド環境下において配列へ安全にアクセスしたい場合、SyncRootプロパティを利用してロックを取得することで、同期アクセスを実現できます。ArrayクラスのSyncRootプロパティは、配列へのアクセスを同期させるためのオブジェクトを返します。基本的な仕組みlockステートメントの引数にintArr.SyncRootのように指定することで、その配列に対する排他制御が可能になります。これにより、複数のスレッドが同時に同じ配列へアクセスしても、データの整合性が保たれます。サンプルコード1:整数型配列の場合using System; public class Demo { pu
-
C#のHybridDictionaryクラスとは?主なプロパティとメソッドを実例付きで解説
HybridDictionaryクラスは、IDictionaryインターフェースを実装したクラスで、コレクションのサイズが小さいうちはListDictionaryを使用し、コレクションが大きくなると自動的にHashtableへ切り替えるという特徴を持っています。これにより、要素数が少ない場合の高速な処理と、要素数が多い場合の効率的な検索性能の両方を実現できます。 HybridDictionaryクラスの主なプロパティ HybridDictionaryクラスには、以下のようなプロパティが用意されています。 番号プロパティと説明 1CountHybridDictionaryに格納されている
-
C#でHybridDictionaryの同期アクセスを取得する方法
C#のHybridDictionaryに対して同期(スレッドセーフな)アクセスを取得するには、コレクションが持つSyncRootプロパティをlockステートメントと組み合わせて使用します。SyncRootプロパティは、コレクションへのアクセスを同期させるために利用できるオブジェクトを返します。マルチスレッド環境でforeachによる列挙処理を行う場合、このオブジェクトをロックすることで、処理中に他のスレッドがコレクションを変更するのを防ぐことができます。例1:2つのHybridDictionaryでの同期アクセスまず、2つのHybridDictionaryを作成し、SyncRootを使った同期
-
C#のStringDictionaryクラスとは?主なプロパティ・メソッドと使用例をわかりやすく解説
StringDictionaryクラスとは C#のStringDictionaryクラスは、キーと値がどちらも文字列(string型)として厳密に型指定されたハッシュテーブルを実装するコレクションクラスです。通常のHashtableではキーも値もobject型として扱われるためキャストが必要ですが、StringDictionaryを使えば文字列に特化した型安全な操作が可能になります。このクラスはSystem.Collections.Specialized名前空間に属しています。 なお、StringDictionaryはキーを自動的に小文字に変換して管理するという特徴もあります。大文字で追加した
-
C#のList内の要素数をカウントする方法(Countプロパティの使い方)
C#でList<T>に格納されている要素の総数を取得するには、Countプロパティを使用します。Countプロパティは、リストに現在含まれている要素の個数をint型の値として返します。基本的な使い方以下の例では、文字列型のリストを作成し、要素を追加した後にCountプロパティで要素数を確認しています。また、Clear()メソッドですべての要素を削除した後、要素数がどのように変化するかも確認できます。サンプルコードusing System; using System.Collections.Generic; public class Demo { publi
-
C#で別のコレクションからキュー(Queue)を作成する方法
C#では、Queue<T> クラスのコンストラクタに IEnumerable<T> 型のコレクションを渡すことで、既存のコレクションを元に新しいキューを簡単に作成できます。この記事では、ToArray() メソッドでキューを配列に変換し、その配列から新しいキューを生成する具体例を紹介します。例1:文字列型のキューから新しいキューを作成するまず、string 型のキューを作成し、それを元にもう一つのキューを生成してみましょう。using System; using System.Collections.Generic; public class Demo { pu
-
C#で現在のTypeから指定されたメンバーを取得する方法
C#では、リフレクション(System.Reflection)を利用することで、現在のTypeから指定した名前のメンバーを動的に取得できます。メンバー情報を取得するには Type.GetMember() メソッドを使用し、フィールド単体を取得したい場合は Type.GetField() メソッドが便利です。以下に具体的なサンプルコードを示します。例1:GetMemberとGetFieldを使った基本的な取得方法using System; using System.Reflection; public class Demo { public static void Main() {
-
C#でStackへの同期アクセスを取得する方法
C#の Stack コレクションに対してスレッドセーフな(同期された)アクセスを行うには、SyncRoot プロパティを利用して lock ステートメントでロックを取得します。これにより、複数のスレッドが同時にスタックへアクセスしても、データの整合性が保たれます。サンプルコード1:数値を格納したStackの場合using System; using System.Collections; public class Demo { public static void Main() { Stack stack = new Stack(); stack.Push(10
-
C#でListに指定した条件に一致する要素が含まれているか確認する方法
C#でList<T>の中に、指定された条件(述語)に一致する要素が1つでも含まれているかどうかを確認するには、Existsメソッドを使用します。ExistsメソッドはPredicate<T>デリゲートを引数に受け取り、条件に一致する要素が存在すればtrue、1つも存在しなければfalseを返します。コード例以下の例では、「3で割り切れる」という条件を満たす要素がリスト内に存在するかどうかを判定しています。using System; using System.Collections.Generic; public class Demo { &nb
-
C#のSortedListに特定のキーが含まれているか確認する方法
C# の SortedList オブジェクトに特定のキーが含まれているかどうかを確認するには、Contains() メソッドを使用します。このメソッドは、指定したキーが SortedList 内に存在する場合は true、存在しない場合は false を返します。 Contains() メソッドは ContainsKey() メソッドと同等の動作をします。なお、値の存在を確認したい場合には ContainsValue() メソッドを使用します。 例1 using System; using System.Collections; public class Demo { &nbs
-
C#でArrayList全体の列挙子(IEnumerator)を取得する方法
C#でArrayList全体の列挙子を取得するには、GetEnumerator()メソッドを使用します。このメソッドは、コレクション内のすべての要素を順番に反復処理できるIEnumeratorインターフェースのオブジェクトを返します。GetEnumerator()メソッドの仕組みGetEnumerator()が返す列挙子は、以下のメンバーを持っています。MoveNext():列挙子を次の要素へ進めます。次の要素が存在すればtrue、コレクションの末尾に達するとfalseを返します。Current:現在の位置にある要素を取得します。Reset():列挙子を初期位置(最初の要素の前)に戻します。w
-
【C#】StringCollectionで要素が最初に出現するインデックスを取得する方法
C#のStringCollectionクラスには、指定した文字列がコレクション内で最初に出現するインデックスを取得するためのIndexOfメソッドが用意されています。この記事では、IndexOfメソッドの基本的な使い方を、サンプルコードと実行結果をもとにわかりやすく解説します。IndexOfメソッドとはIndexOfメソッドは、引数に指定した文字列がStringCollection内で最初に見つかった位置を、0から始まるインデックスとして返します。重複する要素が存在する場合でも、必ず先頭側の出現位置が返される点がポイントです。また、該当する要素が見つからなかった場合は -1 が返されます。サン
-
C#のListDictionaryクラスとは?主なプロパティ・メソッドと使い方を解説
ListDictionaryクラスは、単方向リンクリスト(片方向連結リスト)を使用してIDictionaryインターフェースを実装したコレクションです。要素数が10個未満程度の小規模なコレクションを扱う場合に特に適しており、少ないデータ量であれば高速な動作が期待できます。この記事では、ListDictionaryクラスの主なプロパティやメソッド、そして実際のコード例を通じてその基本的な使い方を詳しく解説します。ListDictionaryクラスの主なプロパティListDictionaryクラスには、以下のようなプロパティが用意されています。番号プロパティと説明1CountListDiction
-
C#のQueue(キュー)クラスとは?主要メソッドと実用例をわかりやすく解説
C#の Queue<T> クラスは、先入れ先出し(FIFO:First-In, First-Out)方式でオブジェクトを格納するコレクションです。最初に追加した要素が最初に取り出されるという特性を持つため、タスクの順次処理やデータのバッファリングなど、処理順序が重要となる場面で広く活用されています。まず、Queueクラスで利用できる主なメソッドを一覧で確認しましょう。No.メソッドと説明1Clear()Queue<T>からすべてのオブジェクトを削除します。2Contains(T)指定した要素がQueue<T>内に存在するかどうかを判定します。3CopyTo(
-
【C#】BitArrayの特定位置にあるビットを指定した値に設定する方法
C#のBitArrayクラスでは、Setメソッドを使うことで、特定のインデックス位置にあるビットを任意の値(true / false)に設定できます。この記事では、実際のコード例と実行結果をもとに、その使い方をわかりやすく解説します。SetメソッドとはBitArray.Set(int index, bool value)は、第1引数で指定したインデックス位置のビットを、第2引数で指定したブール値に更新するメソッドです。インデックスは0から始まるため、注意が必要です。サンプルコード1:単一ビットの設定まずは、1つのビットだけを変更する基本的な例を見てみましょう。using System; usi
-
C#のLinkedListから指定したノードを削除する方法
C#のLinkedList<T>から指定したノード(値)を削除するには、Remove()メソッドを使用します。このメソッドは、リスト内に同じ値が複数存在する場合でも、最初に出現した1つのノードだけを削除します。削除が成功するとtrue、値が見つからなければfalseを返します。例1:int型のLinkedListから値を削除する次の例では、整数値を格納したLinkedListを作成し、FindLast()で特定の値を検索した後、Remove()メソッドで値「500」を削除しています。using System;using System.Collections.Generic;publ
-
C#のSortedListクラスとは?主要プロパティ・メソッドとサンプルコードで徹底解説
C#のSortedListクラスは、キーによって自動的にソートされたキー/値ペアのコレクションを表します。各要素には、キーだけでなくインデックスを使ってもアクセスできるのが大きな特徴です。 この記事では、SortedListクラスの主なプロパティとメソッドを一覧形式で整理し、実際に動くサンプルコードを通して基本的な使い方を解説します。 SortedListクラスの主なプロパティ No.プロパティと説明 1CapacitySortedListオブジェクトの容量(格納可能な要素数)を取得または設定します。 2CountSortedListオブジェクトに含まれる要素の数を取得します。 3IsF
-
C#のHashSetで要素数を取得する方法|Countプロパティの使い方を解説
C#のHashSetの要素数を取得する方法 C#のHashSet<T>に格納されている要素の数を取得するには、Countプロパティを使用します。Countプロパティは、HashSet内に現在存在する要素の個数をint型で返します。 HashSetは重複する要素を自動的に排除するコレクションです。そのため、同じ値を何度Addしても要素数は増えず、ユニークな値だけがカウントされます。この挙動については、後半の文字列の例で実際に確認できます。 例1:整数のHashSetで要素数を取得する まずはint型のHashSetを使った基本的な例です。Countプロパティのほかに、Overlaps
-
C#でスレッドがバックグラウンドスレッドかどうかを確認する方法
C#では、スレッドがバックグラウンドスレッドであるかどうかを確認するには、IsBackgroundプロパティを使用します。このプロパティは読み書き可能で、値を設定することでスレッドをバックグラウンドスレッドとして動作させることもできます。なお、新しく作成したスレッドは既定でフォアグラウンドスレッドになります。フォアグラウンドスレッドは処理が完了するまでアプリケーション(プロセス)の終了を防ぎますが、バックグラウンドスレッドはすべてのフォアグラウンドスレッドが終了すると強制的に停止されます。例1:IsBackgroundプロパティで確認するまず、IsBackgroundプロパティを使ってスレッド
-
C#でSortedListオブジェクトを検索する方法|ContainsKey・ContainsValueの使い方を解説
C#のSortedListオブジェクトを検索するには、ContainsKeyメソッド(キーの検索)やContainsValueメソッド(値の検索)を使用します。これらのメソッドは、指定したキーや値がコレクション内に存在するかどうかを判定し、結果をbool値(true / false)として返します。 なお、ContainsKeyは内部で二分探索(バイナリサーチ)を行うため計算量はO(log n)ですが、ContainsValueは先頭から順にすべての要素を調べる線形探索のためO(n)の計算量が必要になる点に注意しましょう。 例1:ContainsValueメソッドとContainsKeyメソッ