C#-এ BitArray.Equals() মেথডটি দুটি BitArray অবজেক্ট সমান কিনা তা যাচাই করতে ব্যবহৃত হয়। গুরুত্বপূর্ণ: BitArray-র জন্য Equals() রেফারেন্স সমতা (reference equality) চেক করে, বিট-বাই-বিট কন্টেন্ট সমতা (content equality) নয়।
উদাহরণ ১: একই রেফারেন্স (Reference equality)
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("Elements in BitArray1...");
foreach (bool res in arr1){
Console.WriteLine(res);
}
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2){
Console.WriteLine(res);
}
BitArray arr3 = new BitArray(2);
arr3 = arr2; // একই রেফারেন্স
Console.WriteLine("Is BitArray2 equal to BitArray3? = " + arr2.Equals(arr3));
}
}
আউটপুট
Elements in BitArray1... False True Elements in BitArray2... False True Is BitArray2 equal to BitArray3? = True
উদাহরণ ২: একই কন্টেন্ট কিন্তু আলাদা রেফারেন্স
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("Elements in BitArray1...");
foreach (bool res in arr1){
Console.WriteLine(res);
}
arr2[0] = false;
arr2[1] = true;
Console.WriteLine("Elements in BitArray2...");
foreach (bool res in arr2){
Console.WriteLine(res);
}
Console.WriteLine("Is BitArray1 equal to BitArray2? = " + arr1.Equals(arr2));
}
}
আউটপুট
Elements in BitArray1... False True Elements in BitArray2... False True Is BitArray1 equal to BitArray2? = False
কন্টেন্ট সমতা (Content Equality) চেক করার উপায়
যেহেতু Equals() রেফারেন্স চেক করে, বিট-বাই-বিট তুলনার জন্য নিচের পদ্ধতিগুলো ব্যবহার করুন:
// পদ্ধতি ১: ম্যানুয়াল লুপ
bool AreBitArraysEqual(BitArray a1, BitArray a2) {
if (a1.Count != a2.Count) return false;
for (int i = 0; i < a1.Count; i++) {
if (a1[i] != a2[i]) return false;
}
return true;
}
// পদ্ধতি ২: LINQ ব্যবহার করে
bool AreBitArraysEqualLinq(BitArray a1, BitArray a2) {
return a1.Count == a2.Count &&
a1.Cast<bool>().SequenceEqual(a2.Cast<bool>());
}
// পদ্ধতি ৩: CopyTo ব্যবহার করে বাইট অ্যারে-এ কনভার্ট করে
bool AreBitArraysEqualBytes(BitArray a1, BitArray a2) {
if (a1.Count != a2.Count) return false;
byte[] bytes1 = new byte[(a1.Count + 7) / 8];
byte[] bytes2 = new byte[(a2.Count + 7) / 8];
a1.CopyTo(bytes1, 0);
a2.CopyTo(bytes2, 0);
return bytes1.SequenceEqual(bytes2);
}
মূল পয়েন্টস
BitArray.Equals()ডিফল্টObject.Equals()আচরণ বজায় রাখে (রেফারেন্স সমতা)।- একই বিট প্যাটার্নवाले দুটি আলাদা BitArray অবজেক্ট
falseরিটার্ন করবে। - কন্টেন্ট তুলনার জন্য কাস্টম লজিক বা LINQ-এর
SequenceEqual()ব্যবহার করুন। BitArrayকম্প্যাক্ট বিট স্টোরেজের জন্য অপ্টিমাইজড (প্রতি বুল ১ বিট)۔Count,Lengthপ্রপার্টি বিট সংখ্যা রিটার্ন করে।