Delegate হল একটি টাইপ সেফ পদ্ধতি যা কোনো মেথডকে রেফারেন্স (references) হিসেবে ব্যবহার করার সুযোগ দেয়। C#-এ Func
এবং Action
হল দুটি জনপ্রিয় ডেলিগেট টাইপ যা একটি মেথডকে প্যারামিটার হিসেবে গ্রহণ করে এবং তা কার্যকর করার জন্য ব্যবহৃত হয়।
Func
এবং Action
দুটি মেকানিজম আছে যেগুলি কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে, বিশেষত যখন আপনি কোডে নির্দিষ্ট লজিক প্রেরণ করতে চান।
Func
ডেলিগেট একটি ধরনের ডেলিগেট যা একটি ভ্যালু রিটার্ন করে এবং একটি অথবা একাধিক ইনপুট প্যারামিটার গ্রহণ করতে পারে। এটি ০ থেকে ১৬ পর্যন্ত প্যারামিটার নিতে পারে এবং অবশ্যই একটি রিটার্ন ভ্যালু প্রদান করবে।
Func<in T1, in T2, ..., TResult> funcName;
এখানে একটি Func
ডেলিগেট ব্যবহার করা হয়েছে যা দুটি সংখ্যার যোগফল প্রদান করবে:
using System;
class Program
{
static void Main()
{
// Func ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int) এবং একটি রিটার্ন টাইপ (int)
Func<int, int, int> addNumbers = (a, b) => a + b;
// Func ডেলিগেট ব্যবহার
int result = addNumbers(5, 10);
Console.WriteLine($"The sum of 5 and 10 is: {result}");
}
}
আউটপুট:
The sum of 5 and 10 is: 15
এখানে, Func<int, int, int>
একটি ডেলিগেট যা দুটি int
ইনপুট নেবে এবং একটি int
রিটার্ন করবে।
Func
ডেলিগেট অনেক ইনপুট প্যারামিটারও গ্রহণ করতে পারে (যেমন ১টি, ২টি, ৩টি বা তারও বেশি) এবং একটি রিটার্ন টাইপও থাকতে পারে।
Func<int, int, int, int> multiplyNumbers = (a, b, c) => a * b * c;
int result = multiplyNumbers(2, 3, 4);
Console.WriteLine($"The product is: {result}");
আউটপুট:
The product is: 24
এখানে, Func<int, int, int, int>
তিনটি ইনপুট প্যারামিটার এবং একটি int
রিটার্ন করেছে।
Action
ডেলিগেটের ক্ষেত্রে কোনো রিটার্ন ভ্যালু থাকে না। এটি শুধুমাত্র ইনপুট প্যারামিটার নেয় (০ থেকে ১৬টি ইনপুট প্যারামিটার) এবং কোনো রিটার্ন ভ্যালু প্রদান করে না।
Action<in T1, in T2, ...> actionName;
এখানে একটি Action
ডেলিগেট ব্যবহার করা হয়েছে, যা দুটি প্যারামিটার নেবে এবং কনসোলে মেসেজ প্রিন্ট করবে।
using System;
class Program
{
static void Main()
{
// Action ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int)
Action<int, int> printSum = (a, b) => Console.WriteLine($"Sum: {a + b}");
// Action ডেলিগেট ব্যবহার
printSum(10, 20);
}
}
আউটপুট:
Sum: 30
এখানে Action<int, int>
একটি ডেলিগেট যা দুটি int
ইনপুট প্যারামিটার নেয় এবং কোনো রিটার্ন ভ্যালু প্রদান না করে কেবল কনসোলে ফলাফল প্রিন্ট করে।
Action
ডেলিগেট ব্যবহার করা যেতে পারে বিভিন্ন কাজ (side effects) করার জন্য, যেমন ফাইল লেখার কাজ, UI আপডেট করা ইত্যাদি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Action
ডেলিগেট ব্যবহার করে একটি ডেটা কনসোলে প্রিন্ট করা হয়েছে:
Action<string> printMessage = (message) => Console.WriteLine(message);
printMessage("Hello, this is an Action delegate example!");
আউটপুট:
Hello, this is an Action delegate example!
ফিচার | Func | Action |
---|---|---|
রিটার্ন ভ্যালু | একটি রিটার্ন ভ্যালু থাকে। (TResult) | কোনো রিটার্ন ভ্যালু নেই। |
ইনপুট প্যারামিটার | ১ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে। | ০ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে। |
ব্যবহার | সাধারণত গণনা বা কিছু মান বের করার জন্য ব্যবহৃত। | কোন নির্দিষ্ট কাজ (side effects) করার জন্য ব্যবহৃত। |
Func এবং Action ডেলিগেট C#-এ ফাংশনাল প্রোগ্রামিং ধারণা প্রয়োগের জন্য অত্যন্ত কার্যকরী। Func ডেলিগেট একটি রিটার্ন ভ্যালু প্রদান করে, যেখানে Action কোনো রিটার্ন ভ্যালু ছাড়াই নির্দিষ্ট কার্য সম্পাদন করতে ব্যবহৃত হয়। এই দুই ডেলিগেটের ব্যবহার কোডে আরো নমনীয়তা এবং পুনঃব্যবহারযোগ্যতা আনে।
common.read_more