লাম্বদা এক্সপ্রেশন হ'ল বেনাম প্রতিনিধিদের জন্য একটি সহজ বাক্য গঠন এবং যেখানেই বেনামে প্রতিনিধি ব্যবহার করা যেতে পারে সর্বত্র ব্যবহার করা যেতে পারে। তবে এর বিপরীতটি সত্য নয়; লাম্বদা এক্সপ্রেশনগুলি এক্সপ্রেশন ট্রিগুলিতে রূপান্তরিত হতে পারে যা LINQ এর মত অনেকগুলি যাদুবিদ্যাকে এসকিউএল রূপান্তর করতে দেয়।
নীচে বেনামে প্রতিনিধিরা লম্বা এক্সপ্রেশন ব্যবহার করে চোখের উপর কতটা সহজ তা দেখানোর জন্য অবজেক্ট এক্সপ্রেশনের কাছে একটি লিনকিউর উদাহরণ রয়েছে:
// anonymous delegate
var evens = Enumerable
.Range(1, 100)
.Where(delegate(int x) { return (x % 2) == 0; })
.ToList();
// lambda expression
var evens = Enumerable
.Range(1, 100)
.Where(x => (x % 2) == 0)
.ToList();
লাম্বদা এক্সপ্রেশন এবং বেনামী প্রতিনিধিদের একটি পৃথক ফাংশন লেখার সুবিধা রয়েছে: তারা ক্লোজারগুলি কার্যকর করে যা আপনাকে ফাংশনটিতে প্যারামিটার যুক্ত না করে বা এক-সময় ব্যবহারের অবজেক্ট তৈরি না করেই স্থানীয় অবস্থাকে ফাংশনে স্থান দিতে দেয়।
এক্সপ্রেশন ট্রি হ'ল সি # 3.0 এর একটি খুব শক্তিশালী নতুন বৈশিষ্ট্য যা কোনও এপিআইকে মৃত্যুদন্ড কার্যকর করা যায় এমন কোনও পদ্ধতির কেবল রেফারেন্স না দিয়ে এক্সপ্রেশনের কাঠামোটি দেখার অনুমতি দেয়। একটি এপিআইকে কেবলমাত্র একটি প্রতিনিধি প্যারামিটারকে একটি প্যারামিটারে পরিণত করতে Expression<T>
হবে এবং সংকলক বেনামে প্রতিনিধি পরিবর্তে ল্যাম্বডা থেকে একটি এক্সপ্রেশন ট্রি তৈরি করবে:
void Example(Predicate<int> aDelegate);
যেমন বলা হয়:
Example(x => x > 5);
হয়ে:
void Example(Expression<Predicate<int>> expressionTree);
পরেরটি বিমূর্ত সিনট্যাক্স ট্রিটির একটি প্রতিনিধিত্ব করে যা অভিব্যক্তিটি বর্ণনা করে x > 5
। এসকিউএল-এর লাইনকিউ সার্ভারের পাশে ফিল্টারিং / অর্ডারিং / ইত্যাদির জন্য পছন্দসই এসকিউএল এক্সপ্রেশনগুলিতে সি # এক্সপ্রেশনগুলি ঘুরিয়ে আনতে সক্ষম হওয়ার জন্য এই আচরণের উপর নির্ভর করে।
delegate
সি # তে কী রয়েছে, আমি এই পৃষ্ঠার বাকীটি পড়ার আগে এই প্রবন্ধটি