C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】BitArrayのLengthプロパティで要素数を取得・設定する方法

C#のBitArrayクラスでは、Lengthプロパティを使用することで、ビット配列に含まれる要素数を取得したり、新しい値を代入して配列のサイズを変更したりできます。

  • 取得: arr.Length のように参照すると、現在の要素数が int 型で返されます。
  • 設定: arr.Length = 10; のように代入すると、配列が指定したサイズに拡張または縮小されます。

なお、読み取り専用で要素数だけを確認したい場合は Count プロパティも利用できますが、サイズ変更ができるのは Length プロパティです。

サンプルコード1:Lengthプロパティで要素数を取得する

まずは、同じサイズ(2要素)のBitArrayを2つ作成し、それぞれのLengthと全要素を表示する例を見てみましょう。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      BitArray arr1 = new BitArray(2);
      BitArray arr2 = new BitArray(2);

      arr1[0] = false;
      arr1[1] = true;

      Console.WriteLine("BitArray1の長さ = " + arr1.Length);
      Console.WriteLine("BitArray1の要素一覧...");
      foreach (bool res in arr1) {
         Console.WriteLine(res);
      }

      arr2[0] = false;
      arr2[1] = true;

      Console.WriteLine("\nBitArray2の長さ = " + arr2.Length);
      Console.WriteLine("BitArray2の要素一覧...");
      foreach (bool res in arr2) {
         Console.WriteLine(res);
      }

      Console.WriteLine("\nBitArray1とBitArray2は等しいか? = " + arr2.Equals(arr1));
   }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

BitArray1の長さ = 2
BitArray1の要素一覧...
False
True
BitArray2の長さ = 2
BitArray2の要素一覧...
False
True
BitArray1とBitArray2は等しいか? = False

ポイント: 両方のBitArrayは中身(False, True)が完全に同じですが、Equals メソッドの結果は False になっています。これは、BitArrayクラスが Equals をオーバーライドしておらず、既定ではインスタンス(参照)が同一かどうかを比較するためです。内容を比較したい場合は、各要素をループで照合するなどの独自処理が必要です。

サンプルコード2:異なるサイズのBitArrayを作成する

続いて、要素数の異なるBitArray(2要素と1要素)を作成し、それぞれのLengthを確認する例です。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      BitArray arr1 = new BitArray(2);
      BitArray arr2 = new BitArray(1);

      arr1[0] = false;
      arr1[1] = true;

      Console.WriteLine("BitArray1の長さ = " + arr1.Length);
      Console.WriteLine("BitArray1の要素一覧...");
      foreach (bool res in arr1) {
         Console.WriteLine(res);
      }

      Console.WriteLine("\nBitArray2の長さ = " + arr2.Length);
      Console.WriteLine("BitArray2の要素一覧...");
      foreach (bool res in arr2) {
         Console.WriteLine(res);
      }
   }
}

実行結果

このコードを実行すると、以下の出力が得られます。

BitArray1の長さ = 2
BitArray1の要素一覧...
False
True
BitArray2の長さ = 1
BitArray2の要素一覧...
False

まとめ

  • new BitArray(n) で作成した直後の配列は、すべてのビットが false で初期化されます。
  • Length プロパティで現在の要素数を取得できます。
  • Length に値を代入すると配列サイズを変更でき、縮小時は末尾の要素が切り捨てられ、拡張時は false の要素が追加されます。
  • foreach を使えば、BitArray内のすべてのビット(bool値)を順番に取り出せます。
  1. C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方

    C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();

  2. Redis ZLEXCOUNTコマンドの使い方 – 辞書順の範囲でソート済みセットの要素数を取得する方法

    このチュートリアルでは、RedisのZLEXCOUNTコマンドを使って、指定した範囲内の値を持つソート済みセット(Sorted Set)の要素数を取得する方法を解説します。 ZLEXCOUNTコマンドとは ZLEXCOUNTコマンドは、ソート済みセットに格納された要素のうち、min(最小値)とmax(最大値)の引数で指定した範囲に含まれる要素(要素の文字列表現)の数を返します。 このコマンドを利用する際は、ソート済みセットのすべての要素に同じスコアを挿入しておく必要があります。こうすることで、スコアではなく要素そのものの辞書順(レキシコグラフィカル順)による並び替えが強制されます。 範囲指定の