ল্যাম্বডা এক্সপ্রেশন হলো অ্যানোনিমাস মেথড রিপ্রেজেন্ট করার একটি ভালো উপায়। অ্যানোনিমাস মেথড এবং ল্যাম্বডা এক্সপ্রেশন দুটোই মেথড ইমপ্লিমেন্টেশন ইনলাইন ডিফাইন করতে দেয়, কিন্তু অ্যানোনিমাস মেথডে এক্সপ্লিসিটলি প্যারামিটার টাইপ এবং রিটার্ন টাইপ ডিফাইন করতে হয়।
- Expression lambda:
(input-parameters) => expression(বডি এক এক্সপ্রেশন) - Statement lambda:
(input-parameters) => {(বডি স্টেটমেন্ট ব্লক)}
যেকোনো ল্যাম্বডা এক্সপ্রেশন ডেলিগেট টাইপে কনভার্ট করা যায়। ডেলিগেট টাইপ প্যারামিটার টাইপ এবং রিটার্ন ভ্যালু দ্বারা নির্ধারিত। যদি ল্যাম্বডা কিছু রিটার্ন না করে, তবে Action ডেলিগেট টাইপে কনভার্ট হয়; অন্যথায় Func ডেলিগেট টাইপে।
static void Main(string[] args)
{
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 25
Console.ReadLine();
}
আরও উদাহরণ
Action line = () => Console.WriteLine();
Func<double, double> cube = x => x * x * x;
Func<int, int, bool> testForEquality = (x, y) => x == y;
Func<int, string, bool> isTooLong = (int x, string s) => s.Length > x;
C# 7.0+ এ বিল্ট-ইন টাপল সাপোর্ট আছে। টাপল আর্গুমেন্ট হিসেবে পাস করা যায় এবং রিটার্নও করা যায়।
- ল্যাম্বডা এক্সপ্রেশনে ইন্ট্রোডিউস করা ভেরিয়েবল আউটসাইড মেথডে ভিজিবল নয়।
- ল্যাম্বডা এক্সপ্রেশন
in,ref,outপ্যারামিটার সরাসরি ক্যাপচার করতে পারে না। - ল্যাম্বডাতে
returnস্টেটমেন্ট আউটসাইড মেথড রিটার্ন করে না। goto,break,continueল্যাম্বডা ব্লকের বাইরে টার্গেট করলে এরর।
ব্যবহার: LINQ কোয়েরি, ইভেন্ট হ্যান্ডলার, টাস্ক রান, ডেলিগেট পাসিং-এ ল্যাম্বডা বহুল ব্যবহৃত হয়।