Tuple ক্লাসের Equals(object obj) মেথড ব্যবহার করে দুটি Tuple অবজেক্ট সমান কিনা তা যাচাই করা যায়। দুটি Tuple সমান হলে এবং তখনই সমান হয় যখন:
- উভয়ের একই টাইপ (সেইম জেনেরিক আর্গুমেন্ট) হয়
- উপাদান সংখ্যা সমান হয়
- প্রতিটি সংশ্লিষ্ট উপাদান সমান হয় (Item1 == Item1, Item2 == Item2, ...)
উদাহরণ ১: সমান Tuple অবজেক্ট
using System;
public class Demo {
public static void Main(string[] args) {
var tuple1 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500);
var tuple2 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500);
Console.WriteLine("Tuple1 এবং Tuple2 সমান কিনা? = " + tuple1.Equals(tuple2));
}
}
আউটপুট
Tuple1 এবং Tuple2 সমান কিনা? = True
উদাহরণ ২: অসমান Tuple অবজেক্ট (নেস্টেড Tuple ভিন্ন)
using System;
public class Demo {
public static void Main(string[] args) {
// ৮-উপাদানের Tuple (সান্তম উপাদান nested Tuple)
var tuple1 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500, Tuple.Create(50, 100));
var tuple2 = Tuple.Create(150, 400, 500, 700, 100, 1200, 1500, Tuple.Create(100, 200));
Console.WriteLine("Tuple1 এবং Tuple2 সমান কিনা? = " + tuple1.Equals(tuple2));
}
}
আউটপুট
Tuple1 এবং Tuple2 সমান কিনা? = False
Tuple.Equals() - গুরুত্বপূর্ণ বিষয়সমূহ
- ভ্যালু বেইসড সমতা: Tuple রেফারেন্স টাইপ হলেও
Equalsভ্যালু বেইসড সমতা চেক করে (struct-like behavior)। - নেস্টেড Tuple: ৮+ উপাদানের Tuple-এ সান্তম উপাদান
Restপ্রোপার্টিতে থাকে, যা একটি Tuple। নেস্টেড Tuple-র সমতাও রিকার্সিভলি চেক হয়। - null হ্যান্ডলিং:
tuple.Equals(null)→falseরিটার্ন করে (নাল রেফারেন্স এক্সেপশন নয়)। - টাইপ মিল:
Tuple<int, int>এবংTuple<long, long>সমান নয় (টাইপ ভিন্ন)।
Tuple সমতা চেকের অন্যান্য পদ্ধতি
// ১. == অপারেটর (রেফারেন্স সমতা চেক করে - Tuple-এ ওভাররাইড নেই)
Console.WriteLine(tuple1 == tuple2); // False (আলাদা অবজেক্ট)
// ২. Object.Equals (স্ট্যাটিক, null-safe)
Console.WriteLine(object.Equals(tuple1, tuple2)); // True (ভ্যালু বেইসড)
// ৩. ValueTuple (C# 7.0+) - == অপারেটর ওভাররাইড করা আছে
var vt1 = (1, 2, 3);
var vt2 = (1, 2, 3);
Console.WriteLine(vt1 == vt2); // True (ভ্যালু বেইসড)
Console.WriteLine(vt1.Equals(vt2)); // True
Tuple vs ValueTuple - সমতা চেক তুলনা
| বৈশিষ্ট্য | Tuple (Reference Type) | ValueTuple (Value Type) |
|---|---|---|
| Equals() | ভ্যালু বেইসড (ওভাররাইড) | ভ্যালু বেইসড (ওভাররাইড) |
| == অপারেটর | রেফারেন্স বেইসড | ভ্যালু বেইসড (ওভাররাইড) |
| GetHashCode() | ভ্যালু বেইসড | ভ্যালু বেইসড |
| নেস্টেড সাপোর্ট | Rest প্রোপার্টি | নেস্টেড টাইপ সরাসরি |
সুপারিশ: নতুন কোডে ValueTuple (C# 7.0+) ব্যবহার করুন - এটি হালকা, ফাস্ট, এবং নামযুক্ত উপাদান সাপোর্ট করে।