C#のコレクションクラスとは?主な種類とBitArrayクラスの使い方を解説
C#におけるコレクションクラスは、要素へのメモリを動的に割り当てたり、インデックスに基づいて項目のリストへアクセスしたりするなど、さまざまな用途で活用される重要なクラス群です。System.Collections名前空間には、データの管理方法やアクセス方式が異なる複数のコレクションクラスが用意されており、用途に応じて使い分けることで効率的なプログラミングが可能になります。
C#の主なコレクションクラス一覧
C#でよく使用される代表的なコレクションクラスは以下のとおりです。
| 番号 | クラス名と説明 |
|---|---|
| 1 | ArrayList 個別にインデックスを付けてアクセスできる、オブジェクトの順序付きコレクションを表します。サイズは動的に拡張されるため、要素数が不明な場合にも便利です。 |
| 2 | Hashtable キー(Key)を使用してコレクション内の要素にアクセスします。キーと値のペアを格納し、高速な検索が可能です。 |
| 3 | SortedList キーとインデックスの両方を使用してリスト内の項目にアクセスできます。キー順に自動的にソートされるのが特徴です。 |
| 4 | Stack 後入れ先出し(LIFO:Last-In, First-Out)方式のコレクションを表します。最後に追加した要素が最初に取り出されます。 |
| 5 | Queue 先入れ先出し(FIFO:First-In, First-Out)方式のコレクションを表します。最初に追加した要素が最初に取り出されます。 |
| 6 | BitArray 1と0の値によるバイナリ(ビット)表現の配列を表します。フラグ管理やビット単位の論理演算に適しています。 |
BitArrayクラスの使用例
ここでは、コレクションクラスの中からBitArrayクラスの具体的な使用例を見ていきましょう。BitArrayは、byte型の値をビット単位のブール値(true/false)の配列として扱うことができ、And()メソッドやOr()メソッドを使ったビット演算も簡単に行えます。
サンプルコード
using System;
using System.Collections;
namespace CollectionsApplication {
class Program {
static void Main(string[] args) {
// サイズ8の2つのビット配列を作成
BitArray ba1 = new BitArray(8);
BitArray ba2 = new BitArray(8);
byte[] a = { 60 };
byte[] b = { 13 };
// ビット配列に60と13の値を格納
ba1 = new BitArray(a);
ba2 = new BitArray(b);
// ba1の内容を表示
Console.WriteLine("Bit array ba1: 60");
for (int i = 0; i < ba1.Count; i++) {
Console.Write("{0, -6} ", ba1[i]);
}
Console.WriteLine();
// ba2の内容を表示
Console.WriteLine("Bit array ba2: 13");
for (int i = 0; i < ba2.Count; i++) {
Console.Write("{0, -6} ", ba2[i]);
}
Console.WriteLine();
BitArray ba3 = new BitArray(8);
ba3 = ba1.And(ba2);
// AND演算後のba3の内容を表示
Console.WriteLine("Bit array ba3 after AND operation: 12");
for (int i = 0; i < ba3.Count; i++) {
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
ba3 = ba1.Or(ba2);
// OR演算後のba3の内容を表示
Console.WriteLine("Bit array ba3 after OR operation: 61");
for (int i = 0; i < ba3.Count; i++) {
Console.Write("{0, -6} ", ba3[i]);
}
Console.WriteLine();
Console.ReadKey();
}
}
}実行結果
Bit array ba1: 60 False False True True True True False False Bit array ba2: 13 True False True True False False False False Bit array ba3 after AND operation: 12 False False True True False False False False Bit array ba3 after OR operation: 61 True False True True False False False False
コードの解説
このサンプルでは、まずbyte型の値「60」と「13」をそれぞれBitArrayに格納しています。BitArrayでは、数値がビット列に変換され、各ビットがtrue(1)またはfalse(0)として表現されます。
- And()メソッド:2つのビット配列の論理積(AND)を計算します。60 AND 13 の結果は「12」となり、両方とも1であるビットだけがtrueになります。
- Or()メソッド:2つのビット配列の論理和(OR)を計算します。60 OR 13 の結果は「61」となり、どちらか一方でも1であればtrueになります。
このように、BitArrayクラスを使えば、ビット単位の論理演算を直感的なコードで実装できます。フラグの管理やメモリ効率を重視したデータ処理などにおいて、非常に有用なコレクションクラスといえるでしょう。
-
C#のクラスとは?定義方法と基本構造を初心者向けに解説
C#におけるクラスの基本的な考え方C#において、クラス(class)とは、あるデータ型の設計図(ブループリント)を定義するものです。クラスをもとにして実際に生成されたデータの実体をオブジェクト(object)と呼び、これをクラスの「インスタンス」といいます。また、クラスを構成するメソッドや変数は、まとめてクラスのメンバー(members)と呼ばれます。クラスを理解することは、オブジェクト指向プログラミングを学ぶ上で最も重要な第一歩となります。クラス定義の一般的な書式クラスの定義は、キーワード class から始まり、その後にクラス名を記述します。そして、波括弧 { } で囲まれた部分がクラスの
-
C#の予約語(キーワード)とは?一覧とサンプルコード付きでわかりやすく解説
C#の予約語(キーワード)とはキーワード(予約語)とは、C#コンパイラによってあらかじめ定義されている特別な意味を持つ単語のことです。これらのキーワードは、変数名やクラス名などの識別子としてそのまま使用することはできません。ただし、どうしてもキーワードを識別子として使いたい場合は、キーワードの先頭に「@」記号を付けることで使用できるようになります。また、C#には get や set のように、コード上の文脈によってのみ特別な意味を持つ識別子も存在します。このようなものは「コンテキストキーワード」と呼ばれ、通常の識別子としても利用可能です。C#の予約語一覧以下の表に、C#で予約されている主なキー