Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में लैम्ब्डा एक्सप्रेशन क्या है

लैम्ब्डा एक्सप्रेशन एक अनाम मेथड को दर्शाने का एक बेहतर तरीका है। दोनों अनाम मेथड्स और लैम्ब्डा एक्सप्रेशन्स आपको मेथड कार्यान्वयन को इंलाइन परिभाषित करने की अनुमति देते हैं, हालांकि, एक अनाम मेथड के लिए आपको मेथड के लिए पैरामीटर प्रकार और रिटर्न प्रकार को स्पष्ट रूप से परिभाषित करने की आवश्यकता होती है।

लैम्ब्डा एक्सप्रेशन सिंटैक्स

  • एक्सप्रेशन लैम्ब्डा: एक्सप्रेशन को बॉडी के रूप में रखता है: (input-parameters) => expression
  • स्टेटमेंट लैम्ब्डा: स्टेटमेंट ब्लॉक को बॉडी के रूप में रखता है: (input-parameters) => { }

बुनियादी उदाहरण

static void Main(string[] args)
{
    // Func<int, int> - int लेता है, int लौटाता है
    Func<int, int> square = x => x * x;
    Console.WriteLine(square(5)); // 25
    
    // Action - कोई रिटर्न नहीं
    Action line = () => Console.WriteLine();
    
    // Func<double, double>
    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;
    
    Console.ReadLine();
}

टपल्स के साथ लैम्ब्डा (C# 7.0+)

// टपल आर्गुमेंट
Func<(int X, int Y), double> distance = p => Math.Sqrt(p.X * p.X + p.Y * p.Y);
Console.WriteLine(distance((3, 4))); // 5

// टपल रिटर्न
Func<int, (int Square, int Cube)> powers = x => (x * x, x * x * x);
var (sq, cb) = powers(3); // sq=9, cb=27

लैम्ब्डा एक्सप्रेशन नियम

  • लैम्ब्डा एक्सप्रेशन के भीतर पेश किए गए वेरिएबल्स एनक्लोजिंग मेथड में विजिबल नहीं हैं
  • लैम्ब्डा एक्सप्रेशन एनक्लोजिंग मेथड से in, ref, या out पैरामीटर को सीधे कैप्चर नहीं कर सकता
  • लैम्ब्डा एक्सप्रेशन में return स्टेटमेंट एनक्लोजिंग मेथड को रिटर्न नहीं कराता
  • लैम्ब्डा एक्सप्रेशन में goto, break, या continue स्टेटमेंट नहीं हो सकते यदि टारगेट लैम्ब्डा ब्लॉक के बाहर है
  • लैम्ब्डा एक्सप्रेशन ब्लॉक के बाहर जंप स्टेटमेंट होना भी एरर है यदि टारगेट ब्लॉक के अंदर है

लैम्ब्डा बनाम अनाम मेथड्स

विशेषतालैम्ब्डा एक्सप्रेशनअनाम मेथड (C# 2.0)
सिंटैक्सx => x * xdelegate(int x) { return x * x; }
प्रकार अनुमानहाँनहीं (स्पष्ट प्रकार आवश्यक)
पठनीयताउच्चकम
पैरामीटर प्रकारनिहितस्पष्ट

व्यावहारिक उपयोग के मामले

LINQ क्वेरीज

var numbers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var evens = numbers.Where(n => n % 2 == 0);
var squares = numbers.Select(n => n * n);
var sum = numbers.Where(n => n > 5).Sum();

इवेंट हैंडलर्स

button.Click += (sender, e) => MessageBox.Show("Clicked!");
timer.Elapsed += (s, e) => Console.WriteLine($"Tick at {e.SignalTime}");

टास्क फैक्टरी

Task.Run(() => DoWork());
Task.Factory.StartNew(() => ProcessData());

क्लोजर (वेरिएबल कैप्चर)

int factor = 2;
Func<int, int> multiply = x => x * factor; // factor कैप्चर करता है

factor = 3;
Console.WriteLine(multiply(5)); // 15 (नया factor मान उपयोग करता है!)

लैम्ब्डा को डेलीगेट में परिवर्तित करना

कोई भी लैम्ब्डा एक्सप्रेशन एक डेलीगेट प्रकार में परिवर्तित किया जा सकता है। डेलीगेट प्रकार जिसे एक लैम्ब्डा एक्सप्रेशन में परिवर्तित किया जा सकता है, उसके पैरामीटर्स और रिटर्न वैल्यू के प्रकारों द्वारा परिभाषित किया जाता है।

  • यदि लैम्ब्डा एक्सप्रेशन कोई मान नहीं लौटाता, तो इसे Action डेलीगेट प्रकारों में से एक में परिवर्तित किया जा सकता है
  • अन्यथा, इसे Func डेलीगेट प्रकारों में से एक में परिवर्तित किया जा सकता है

सारांश

लैम्ब्डा एक्सप्रेशन्स अनाम फंक्शन्स लिखने के लिए संक्षिप्त, टाइप-सेफ तरीका प्रदान करते हैं। वे LINQ, इवेंट हैंडलिंग, एसिंक्रोनस प्रोग्रामिंग और फंक्शनल प्रोग्रामिंग पैटर्न में बड़े पैमाने पर उपयोग किए जाते हैं।
  1. 3D प्रिंटिंग क्या है? 3D प्रिंटिंग क्या है?

    3D प्रिंटिंग एक निर्माण प्रक्रिया है जो एक डिजिटल फाइल से त्रि-आयामी, भौतिक वस्तु बनाती है। इस प्रक्रिया को एडिटिव मैन्युफैक्चरिंग कहा जाता है, जिसका अर्थ है कि सामग्री जोड़ी जाती है, हटाई नहीं जाती। 3D प्रिंटिंग के साथ, आप एक मॉडलिंग प्रोग्राम में, जिसे CAD सॉफ्टवेयर के नाम से जाना जाता है, एक 3D

  1. IP एड्रेस क्या है? IP एड्रेस क्या है?

    एक IP एड्रेस, इंटरनेट प्रोटोकॉल एड्रेस का संक्षिप्त रूप, नेटवर्क से जुड़े नेटवर्क हार्डवेयर के लिए एक पहचान संख्या है। IP एड्रेस होने से एक डिवाइस को इंटरनेट जैसे IP-आधारित नेटवर्क पर अन्य डिवाइस के साथ कम्युनिकेट करने की अनुमति मिलती है। IP एड्रेस कैसा दिखता है? अधिकांश IP एड्रेस इस तरह दिखते हैं:

  1. विंडोज 11 SE की खोज करें: माइक्रोसॉफ्ट का क्लासरूम-रेडी OS विंडोज 11 SE की खोज करें: माइक्रोसॉफ्ट का क्लासरूम-रेडी OS

    जबकि क्रोमबुक और क्रोम ऑपरेटिंग सिस्टम ने ज्यादातर शैक्षिक बाजार पर कब्जा कर रखा है, माइक्रोसॉफ्ट कुछ समय से इसमें प्रवेश करने और खेल के मैदान को समतल करने का प्रयास कर रहा है। विंडोज 11 SE के साथ, यह ठीक यही हासिल करना चाहता है। इस ऑपरेटिंग सिस्टम को K-8 क्लासरूम को ध्यान में रखकर बनाया गया है। यह