Lambda Expression in C#

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Lambda Expression in C#: C# 2.0 में Anonymous Method के Concept को Implement किया गया था, जिसके बारे में हमने इसी Chapter के पिछले Section में जाना है। Anonymous Method को C# 3.0 में Lambda Expressions के माध्‍यम से थोडा आसान बनाया गया है।

यानी Lambda Expression केवल Anonymous Method के Syntax को ही थोडा सरल तरीके से Specify करने की सुविधा Provide करता है। Anonymous Method के स्थान पर हम चाहें तो Lambda Expressions का भी प्रयोग कर सकते हैं, जिसे Use करना Anonymous Methods की तुलना में ज्यादा Convenient होता है।

Anonymous Method के Syntax में हम delegate Keyword को एक से ज्यादा बार Use करते हैं, जबकि Compiler को पता होता है कि हम किसी Delegate को कोई Anonymous Method ही Assign कर रहे हैं।

इसलिए Anonymous Method Syntax को हम आसानी से Lambda Expression में Convert कर सकते हैं और ऐसा करने के लिए हमें Anonymous Method से delegate Keyword को Remove करके Parenthesis व Statement Block के बीच ( => ) Arrow Operator का प्रयोग करना होता है। जैसे:

callMethod = delegate(int x) { return x+100; };

इस Anonymous Method को हम निम्नानुसार Lambda Expression में Convert कर सकते हैं:

callMethod = (int x) => { return x+100; };

चूंकि जब हम Delegate Declare करते हैं, तो C# Compiler को पता होता है कि Delegate जिन Methods को Invoke कर सकता है, उनकी Parameter List क्या है। इसलिए Lambda Expression में हम Anonymous Method से Parameter List को भी Remove कर सकते हैं। अत: यदि हम चाहें, तो उपरोक्त Statement को निम्नानुसार भी Specify कर सकते हैं:

callMethod = (x) => { return x+100; };

जबकि यदि Anonymous Method में केवल एक ही Parameter Pass किया जा रहा हो, तो हम Parameter को Enclose करने वाले Parenthesis को भी Remove करते हुए इसी Statement को निम्नानुसार भी लिख सकते हैं:

callMethod = x => { return x+100; };

अन्त में यदि किसी Anonymous Method की Body में केवल एक return Statement ही Specified हो, तो हम निम्नानुसार Curly Brace Pair व return Statement को भी Remove कर सकते हैं:

callMethod = x =>  x+100 ;

इस प्रकार से इस Lambda Expression द्वारा वही Operation Perform होता है, जो निम्न Anonymous Method द्वारा होता है:

callMethod = delegate(int x) { return x+100; };

इस तरह से हम समझ सकते हैं कि Lambda Expression कितनी आसानी से एक Anonymous Method को बहुत ही सरल Expression में Convert कर देता है। यानी किसी Anonymous Method को Specify करने के लिए हम निम्नानुसार इन चारों में से किसी भी Expression को Use कर सकते हैं, जबकि सभी Expressions समान Output ही Return करते हैं:

callMethod = delegate(int x) { return x+100; };
callMethod = (x) => { return x+100; };
callMethod = x => { return x+100; };
callMethod = x =>  x+100 ;

जब हम Lambda Expression को Use करते हैं, तब हमें कुछ बातों का ध्‍यान रखना जरूरी होता है। Lambda Expression में हम जिन Parameters को Specify करते हैं, वे Delegate के Parameters से Number, Position Type में Match होने चाहिए।

Lambda Expression की Parameter List के Parameters के साथ Type Specify करना तब तक जरूरी नहीं होताए जब तक कि हम Parameter List में ref या out Modifier को Use नहीं किया गया हो। जब हम Delegate में Parameters के साथ ref या out Modifier का प्रयोग करते हैं, तब हमें Lambda Expression में भी इन्हें Use करना जरूरी होता है।

यदि Delegate केवल एक Single Parameter ही Accept करता हो, तो हम Lambda Expression से Parenthesis को Remove कर सकते हैं, अन्‍यथा उन्हें Specify करना जरूरी होता है। जबकि यदि Delegate एक भी Parameter Accept न करता हो, तो भी हमें Lambda Expression में Empty Parenthesis Specify करना जरूरी होता है। जैसे:

callMethod = delegate() { return x+100; };
callMethod = () => { return x+100; };
callMethod = () =>  x+100 ;

क्योंकि Lambda Expression Internally एक Anonymous Method को ही Shorthand तरीके से Represent करने की सुविधा Provide करता है। इसलिए एक Method में हम जो भी काम करते हैं, उन सभी कामों को हम Lambda Expression के साथ भी कर सकते हैं। जैसे:

callMethod = delegate() {
for(int i=0; i<10; i++)
	Console.WriteLine(i);
};

इसी Anonymous Method को हम Lambda Expression के रूप में निम्नानुसार Specify कर सकते हैं:

callMethod = () => {
for(int i=0; i<10; i++)
	Console.WriteLine(i);
};

What is Delegate in C#
Delegates and Events in C#

******

ये पोस्‍ट Useful लगा हो, तो Like कर दीजिए।

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Download All Hindi EBooks

सभी हिन्दी EBooks C, C++, Java, C#, ASP.NET, Oracle, Data Structure, VB6, PHP, HTML5, JavaScript, jQuery, WordPress, etc... के DOWNLOAD LINKS प्राप्‍त करें, अपने EMail पर।

Register करके Login करें। इस Popup से छुटकारा पाएें।