কম্পিউটার টিউটোরিয়াল

C#-এ ২-টাপল (Pair Tuple) তৈরি করা: Tuple<T1,T2> ক্লাস ব্যবহার


C#-এ Tuple<T1, T2> ক্লাস একটি ২-টাপল (2-tuple) বা যুগল (pair) উপস্থাপন করে। টাপল হলো একটি ডেটা স্ট্রাকচার যার একটি নির্দিষ্ট ক্রমে উপাদান থাকে। এটি অপরিবর্তনশীল (immutable) এবং রিড-অনলি।

বিশেষতাবলী

  • Item1 - প্রথম উপাদান (T1 টাইপ)
  • Item2 - দ্বিতীয় উপাদান (T2 টাইপ)
  • নিরাপদে টাইপ-চেকড (compile-time type safety)
  • হল्कা ওжет (lightweight) ডেটা কন্টেইনার

উদাহরণ ১: স্ট্রিং জোড়া (Pair of Strings)

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        // Tuple তৈরি
        Tuple tuple = new Tuple("jack", "steve");
        
        Console.WriteLine("Value = " + tuple.Item1);
        
        if (tuple.Item1 == "jack")
        {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item1);
        }
        
        if (tuple.Item2 == "david")
        {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item2);
        }
    }
}

আউটপুট

Value = jack
Exists: Tuple Value = jack

উদাহরণ ২: মিশ্র টাইপ (int এবং string)

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        // Tuple - প্রকার推斷 (type inference) কাজ করে
        Tuple tuple = new Tuple(20, "steve");
        
        Console.WriteLine("Value = " + tuple.Item1);
        
        if (tuple.Item1 == 20)
        {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item1);
        }
        
        if (tuple.Item2 == "david")
        {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item2);
        }
    }
}

আউটপুট

Value = 20
Exists: Tuple Value = 20

ফ্যাক্টরি মেথড: Tuple.Create() (সহজ সিনট্যাক্স)

// new Tuple(...) পরিবর্তে
var tuple1 = Tuple.Create("jack", "steve");        // Tuple
var tuple2 = Tuple.Create(20, "steve");            // Tuple
var tuple3 = Tuple.Create(3.14, DateTime.Now);     // Tuple

// টাইপ স্পেসিফাই করাও যায়
var tuple4 = Tuple.Create(100, "test");

ValueTuple (C# 7.0+) - আধুনিক বিকল্প

C# 7.0 থেকে ValueTuple (স্ট্রাকচার) উপলব্ধ, যা আরও দ্রুত এবং সুবিধাজনক:

সিনট্যাক্স তুলনা

// পুরানো Tuple (Class, Heap-allocated)
Tuple oldStyle = Tuple.Create(1, "one");

// নতুন ValueTuple (Struct, Stack-allocated) - C# 7.0+
(int, string) newStyle = (1, "one");              // Implicit
ValueTuple explicitStyle = (1, "one"); // Explicit

// নামকৃত উপাদান (Named elements) - শুধু ValueTuple-এ
var named = (Id: 1, Name: "one");
Console.WriteLine(named.Id);   // 1
Console.WriteLine(named.Name); // "one"

// Deconstruction
var (id, name) = named;
Console.WriteLine($"{id}, {name}");

টাপল ব্যবহার করার ক্ষেত্র

  • মাল্টিপল রিটার্ন ভ্যালু: মেথড থেকে একাধিক মান ফেরত দেওয়া
  • ডেটা গ্রুপিং: ছোট ডেটা সেট একসাথে রাখা
  • Dictionary Key: কম্পোজিট কি হিসেবে (Tuple ইমপ্লিমেন্ট করে IEquatable)
  • LINQ প্রজেকশন: Select(x => Tuple.Create(x.Id, x.Name))

উদাহরণ: মেথড থেকে দুই মান ফেরত দেওয়া

public (int Quotient, int Remainder) Divide(int dividend, int divisor)
{
    return (dividend / divisor, dividend % divisor);
}

// ব্যবহার
var result = Divide(10, 3);
Console.WriteLine($"Quotient: {result.Quotient}, Remainder: {result.Remainder}");
// Output: Quotient: 3, Remainder: 1

সুপারিশ: নতুন কোডে ValueTuple (C# 7+) ব্যবহার করুন। পুরানো API বা লিগ্যাসি কোডবেসের জন্য Tuple<T1,T2> ব্যবহার করুন।

  1. সি শার্পে Tuple.Create মেথড

  2. C#-এ Tuple এর ওপর ইটারেট করা

  3. পাইথনে নন-লিটারেল (Non-literal) টাপল তৈরি করা

  4. পাইথনে খালি টাপল কীভাবে তৈরি করবেন?