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

C#-এ ডেলিগেট (Delegate) ব্যবহার করে ম্যাথ অপারেশন কল করা

ডেলিগেট (Delegate) হল একটি টাইপ-সেফ ফাংশন পয়েন্টার যা মেথড রেফারেন্স ধারণ করে। এর মাধ্যমে রানটাইমে মেথড ডাইনামিক্যালি কল করা যায় (কলব্যাক, স্ট্র্যাজি প্যাটার্ন)।

ডেলিগেট ডিক্লেরেশন


public delegate double MathOperation(double x); // সিগনেচার: double ইনপুট, double আউটপুট

সম্পূর্ণ উদাহরণ: ডেলিগেট দিয়ে ভাগ করা


using System;

public class MathOperations
{
    public static double DivideBy5(double value) => value / 5;
    public static double MultiplyBy2(double value) => value * 2;
    public static double Square(double value) => value * value;
}

class DelegateMathDemo
{
    // ডেলিগেট টাইপ
    delegate double MathOperation(double x);
    
    static void Main()
    {
        // ডেলিগেট ইনস্ট্যান্সিয়েশন
        MathOperation op1 = MathOperations.DivideBy5;
        MathOperation op2 = MathOperations.MultiplyBy2;
        MathOperation op3 = MathOperations.Square;
        
        // ডেলিগেট অ্যারে
        MathOperation[] operations = { op1, op2, op3 };
        
        double input = 20;
        Console.WriteLine($"Input: {input}\n");
        
        foreach (var op in operations)
        {
            double result = op(input); // ডেলিগেট ইনভোক
            Console.WriteLine($"Result: {result}");
        }
        
        // ল্যাম্বডা এক্সপ্রেশন (C# 3+)
        MathOperation lambda = x => x * x + 10;
        Console.WriteLine($"\nLambda (x^2 + 10): {lambda(input)}");
        
        // Func<double, double> বিল্ট-ইন ডেলিগেট
        Func func = MathOperations.DivideBy5;
        Console.WriteLine($"Func delegate: {func(input)}");
    }
}

আউটপুট


Input: 20

Result: 4          (20 / 5)
Result: 40         (20 * 2)
Result: 400        (20 * 20)

Lambda (x^2 + 10): 410
Func delegate: 4

ডেলিগেটের ধরন

টাইপসিনট্যাক্সপ্যারামিটাররিটার্ন
ActionAction<T1,T2>0-16void
FuncFunc<T1,T2,TResult>0-16TResult
PredicatePredicate<T>1bool
Custom Delegatedelegate R Name(T)CustomCustom

ব্যবহারিক সিনেরিও

  • স্ট্র্যাজি প্যাটার্ন (অ্যালগরিদম সেলেকশন)
  • ইভেন্ট হ্যান্ডলিং
  • LINQ (Where, Select, OrderBy সব ডেলিগেট/Func নেয়)
  • Async কলব্যাক
  1. সিরি ব্যবহার করে হোয়াটসঅ্যাপ কল করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে ফাংশন কল দেরি করে কল করার উপায়

  3. সুইফটে প্রোগ্রাম্যাটিক্যালি ফোন কল করা (iOS 10+)

  4. Android-এ Intent ব্যবহার করে ফোন কল করার পদ্ধতি