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

C#で2つのBitArrayオブジェクトが等しいかどうかを確認する方法

C#で2つのBitArrayオブジェクトが等しいかどうかを確認するには、Equals()メソッドを使用します。このメソッドは、引数に渡されたオブジェクトが現在のインスタンスと等しい場合にtrueを、そうでない場合にfalseを返します。

なお、BitArrayクラスはEquals()メソッドをオーバーライドしていないため、比較は参照(同一インスタンスかどうか)に基づいて行われる点に注意が必要です。以下の例でその挙動を確認してみましょう。

例1:同じ参照を持つBitArrayの比較

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の要素...");
      foreach (bool res in arr1){
         Console.WriteLine(res);
      }

      arr2[0] = false;
      arr2[1] = true;
      Console.WriteLine("BitArray2の要素...");
      foreach (bool res in arr2){
         Console.WriteLine(res);
      }

      BitArray arr3 = new BitArray(2);
      arr3 = arr2;
      Console.WriteLine("BitArray2とBitArray3は等しいか? = " + arr2.Equals(arr3));
   }
}

出力結果

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

BitArray1の要素...
False
True
BitArray2の要素...
False
True
BitArray2とBitArray3は等しいか? = True

ここで結果がTrueになっているのは、変数arr3にarr2を代入することで、両者が同じオブジェクトを参照しているからです。

例2:別々のインスタンス同士の比較

続いて、内容は同じでも別々のインスタンスであるBitArray同士を比較してみます。

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の要素...");
      foreach (bool res in arr1){
         Console.WriteLine(res);
      }

      arr2[0] = false;
      arr2[1] = true;
      Console.WriteLine("BitArray2の要素...");
      foreach (bool res in arr2){
         Console.WriteLine(res);
      }

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

出力結果

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

BitArray1の要素...
False
True
BitArray2の要素...
False
True
BitArray1とBitArray2は等しいか? = False

ポイントまとめ

  • BitArrayのEquals()メソッドはオーバーライドされていないため、参照の等価性が比較されます。
  • 内容が完全に同じでも、別々のインスタンスであれば結果はfalseになります。
  • ビットの内容そのものを比較したい場合は、foreachループなどで各要素を順番に比較する必要があります。
  1. Python Pandas入門:DataFrameオブジェクトが等しいかどうかを確認する方法

    PythonのPandasで2つのDataFrame(データフレーム)オブジェクトが等しいかどうかを確認するには、equals()メソッドを使用します。このメソッドは、2つのDataFrameが同じ形状・要素・値を持っている場合にTrueを返し、そうでなければFalseを返します。DataFrame1の作成まず、2つの列(Car、Reg_Price)を持つDataFrame1を作成しましょう。dataFrame1 = pd.DataFrame( { Car: [BMW, Lexus, Audi, Mustang, Bentley, Jaguar], Reg_Pri

  2. Pythonで2つの数が友愛数(アミカブルナンバー)かどうかを判定する方法

    友愛数(アミカブルナンバー)とは、互いに異なる2つの数のうち、それぞれの「真の約数」(その数自身を除く約数)の総和が、相手方の数とちょうど一致するような数のペアのことです。有名な例としては「220」と「284」の組み合わせが知られています。 2つの数が友愛数であるかどうかを判定するには、まず対象の数について約数の総和を求める関数を定義し、続いてその関数を呼び出して2つの数を比較する別の関数を定義します。約数の総和は、平方根までの範囲でループ処理を行い、剰余演算子(%)を使って割り切れるかを確認することで、効率的に計算できます。 以下に実際の実装例を示します。 サンプルコード import ma