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

C#-তে ফাংশন থেকে একাধিক মান রিটার্ন করা

C#-এ একটি মেথড থেকে একাধিক মান রিটার্ন করার একাধিক পদ্ধতি রয়েছে:

পদ্ধতি ১: ref প্যারামিটার

কলারের ভেরিয়েবল রেফারেন্স পাস করা হয়, মেথড আপডেট করে।

class Program {
    static int ReturnMultipleUsingRef(int first, ref int second) {
        second = 20;
        return first;
    }
    
    static void Main() {
        int a = 10;
        int refValue = 0;
        var result = ReturnMultipleUsingRef(a, ref refValue);
        Console.WriteLine($"Ref Value: {refValue}");        // 20
        Console.WriteLine($"Return Value: {result}");       // 10
        Console.ReadLine();
    }
}

পদ্ধতি ২: out প্যারামিটার

ref-এর মতো, কিন্তু কলারের ভেরিয়েবল ইনিশিয়ালাইজ করতে হয় না। মেথড বাধ্যতামূলকভাবে আসাইন করতে হবে।

static int ReturnMultipleUsingOut(int first, out int second) {
    second = 20; // বাধ্যতামূলক
    return first;
}

static void Main() {
    int a = 10;
    int outValue; // ইনিশিয়ালাইজ দরকার নেই
    var result = ReturnMultipleUsingOut(a, out outValue);
    Console.WriteLine($"Out Value: {outValue}");            // 20
    Console.WriteLine($"Return Value: {result}");           // 10
}

পদ্ধতি ৩: Array রিটার্ন


static int[] ReturnArray() {
    return new int[] { 1, 2 };
}

static void Main() {
    var res = ReturnArray();
    Console.WriteLine($"{res[0]} {res[1]}"); // 1 2
}

পদ্ধতি ৪: Tuple রিটার্ন (C# 7.0+ — প্রস্তাবিত)

সবচেয়ে ক্লিন, টাইপ-সেফ এবং পঠনযোগ্য।


static (int First, int Second) ReturnTuple() {
    return (10, 20);
}

static void Main() {
    var res = ReturnTuple();
    Console.WriteLine($"{res.First} {res.Second}"); // 10 20
    
    // Deconstruction
    var (first, second) = ReturnTuple();
    Console.WriteLine($"{first} {second}");
}

পদ্ধতি ৫: কাস্টম ক্লাস/রেকর্ড (C# 9.0+)

কমপ্লেক্স ডেটা বা পাবলিক API-র জন্য সেরা।


// Record (ইনমিউটেবল, value-based equality)
public record Result(int Sum, int Count, double Average);

static Result Calculate(int[] numbers) {
    return new Result(numbers.Sum(), numbers.Length, numbers.Average());
}

তুলনা সারসংক্ষেপ

পদ্ধতিপ্রकारপাঠনযোগ্যতাটাইপ সেফটিপারফরম্যান্সপ্রস্তাবনা
refরেফারেন্সকম (সাইড ইফেক্ট)ভালোফাস্টলিগেসি/ইন্টারঅপ
outআউটপুটমধ্যমভালোফাস্টTryParse প্যাটার্ন
Arrayরেফারেন্সকম (ইন্ডেক্স ভিত্তিক)মধ্যমহিপ অ্যালোকেশনসিম্পল কেস
Tupleভ্যালু (ValueTuple)উচ্চ (নেমড)উচ্চফাস্ট (স্ট্যাক)সাধারণ ব্যবহারের জন্য সেরা
Record/Classরেফারেন্স/ভ্যালুউচ্চ (সেমান্টিক)উচ্চহিপ (রেকর্ড: স্ট্রাক্ট ও হতে পারে)পাবলিক API, কমপ্লেক্স ডেটা

TryParse প্যাটার্ন (out-র ক্লাসিক ব্যবহার)


public bool TryParse(string input, out int result) {
    return int.TryParse(input, out result);
}

// কল:
if (TryParse("123", out int number)) {
    Console.WriteLine($"Parsed: {number}");
}
  1. জাভাস্ক্রিপ্ট ফাংশন থেকে অবজেক্ট রিটার্ন করা

  2. C#-তে জেনেরিক মেথড থেকে null কীভাবে রিটার্ন করবেন?

  3. পাইথন ফাংশন থেকে JSON অবজেক্ট রিটার্ন করা

  4. পাইথন ফাংশন থেকে ফাংশন রিটার্ন করা