दिलचस्प पोस्ट
उदात्त पाठ: एक वेरिएबल के सभी उदाहरणों को चुनें और वेरिएबल नाम संपादित करें क्या यह एक स्थैतिक java.sql.Connection उदाहरण को एक multithreaded सिस्टम में उपयोग करने के लिए सुरक्षित है? क्लोन विधि को ठीक से कैसे ओवरराइड करें? PHP: किसी रेंज में सभी महीनों के दौरान लूप? पास जावास्क्रिप्ट ऐरे -> PHP बनाएँफ़ाइल: कच्चे डिस्क पर प्रत्यक्ष लिखने का संचालन "प्रवेश निषेध है" – विस्टा, विन 7 सिस्टम में मॉनिटर प्रोसेस प्रारंभ करें कैसे एक आईपी mySQL में स्टोर करने के लिए हेरोकी पर 4 चित्रों को लोड नहीं किया जा रहा है आखिर क्यों नहीं होता है () अंत कभी नहीं? क्या आप स्ट्रिंग स्प्लिट में शून्य-चौराहे मिलान वाले regex का उपयोग कर सकते हैं? क्या इस memcpy कार्यान्वयन में याद आ रही है / उप इष्टतम? PHP का इस्तेमाल करते हुए MySQL ईवेंट त्रुटि प्रतिशत के आधार पर दो रंगों के बीच एंड्रॉइड रंग? उपकरण आवंटन उपयोगकर्ता परिभाषित वर्गों के ऑब्जेक्ट और डेलोक को ट्रैक करते हैं

सी = अर्थ में '=>' सिंटैक्स क्या करता है?

मैं इस फोरम में कुछ प्रश्नों पर इस सिंटैक्स पर आया हूं, लेकिन Google और किसी भी अन्य खोजशब्द को खोज में अक्षरों और संख्याओं को छोड़कर किसी भी चीज़ को ब्लॉक करना पड़ता है, इसलिए "=>" को खोजना असंभव है।

तो क्या कोई मुझे बता सकता है कि यह क्या है और इसका इस्तेमाल कैसे किया जाता है?

Solutions Collecting From Web of "सी = अर्थ में '=>' सिंटैक्स क्या करता है?"

यह लैम्ब्डा ऑपरेटर है

सी # 3 से सी # 5 तक, यह केवल लैम्ब्डा भाव के लिए इस्तेमाल किया गया था। ये मूल रूप से सी # 2 में शुरू की गई अज्ञात तरीकों का एक छोटा रूप है, लेकिन अभिव्यक्ति पेड़ों में भी परिवर्तित किया जा सकता है।

उदहारण के लिए:

Func<Person, string> nameProjection = p => p.Name; 

के बराबर है:

 Func<Person, string> nameProjection = delegate (Person p) { return p.Name; }; 

दोनों ही मामलों में आप उस व्यक्ति के नाम (एक स्ट्रिंग के रूप में) को लौटाने, एक Person पैरामीटर के साथ एक प्रतिनिधि बना रहे हैं।

सी # 6 में अभिव्यक्ति-शरीर वाले सदस्यों के लिए एक ही वाक्यविन्यास प्रयोग किया जाता है, जैसे

 // Expression-bodied property public int IsValid => name != null && id != -1; // Expression-bodied method public int GetHashCode() => id.GetHashCode(); 

यह भी देखें:

  • अनाम तरीकों (सी # 2.0) और लैम्ब्डा भाव (सी # 3.0) के बीच अंतर क्या है
  • लैम्ब्डा क्या है?
  • सी # लेम्बडा अभिव्यक्ति, मुझे इसका उपयोग क्यों करना चाहिए?

(और वास्तव में बहुत से समान प्रश्न – लैम्ब्डा और लैम्ब्डा-अभिव्यक्ति टैग की कोशिश करें।)

इसका अर्थ है भयानकता उदाहरण के लिए

 x => x + 1 

एक विधि का प्रतिनिधित्व करता है जो x को एक पैरामीटर के रूप में लेता है और इसके उत्तराधिकारी देता है।

 button.Click += new EventHandler((sender, e) => methodInfo.Invoke(null, new object[] { sender, e })); 

एक विधि है जो एक MethodInfo धारण के द्वारा एक बटन को एक घटना हेन्डलर प्रदान करता है

यहां एमएसडीएन से एक सरल उदाहरण है

 delegate int del(int i); del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 

=> इनपुट पैरामीटर से पहले कुछ भी, और अभिव्यक्ति के बाद कुछ भी है आपके पास एकाधिक इनपुट पैरामीटर हो सकते हैं लैम्ब्डा मुख्यतः लिनक के साथ उपयोग किया जाता है

यह फ़ंक्शन नोटेशन का एक और रूप है। निम्नलिखित लगभग समतुल्य हैं:

 // explicit function int MyFunc(int pParam) { return pParam; } // delegate function Func<int, int> MyFunc = delegate(int pParam) { return pParam; }; // lambda expression Func<int, int> MyFunc = x => x; 

लैम्ब्डा अभिव्यक्ति के बारे में सोचते हुए सोचो, "कुछ दिया, कुछ वापस लौटें" ऊपर दिए गए उदाहरण में, फ़ंक्शन x => x कहते हैं, "दिया x, वापसी x" (यद्यपि लैम्ब्डा भाव को कुछ वापस करने की ज़रूरत नहीं है, इस स्थिति में आप उन्हें "दिया एक्स, एक्स के साथ कुछ करें" के रूप में पढ़ सकते हैं।)

इस तरह अनाम विधि का उपयोग करने के बजाय:

 somevar.Find(delegate(int n) { if(n < 10) return n; }); 

आप बस इसे इस तरह लिखें:

 somevar.Find(n => n < 10); 

यह वापसी मूल्य के आधार पर डेटा प्रकार लेगा।

यह मूल रूप से "पैरामीटर" की तरह, "में जाता है" का अर्थ है

 MyObjectReference => MyObjectReference.DoSomething() 

आम तौर पर आप उन कार्यों का उपयोग पैरामीटर, या LINQ स्टेटमेंट्स में विधियों में करने के लिए करते हैं

 MyCollection.Where(myobj => myobj.Age>10) 

उदाहरण के लिए।

यह लैम्ब्डा अभिव्यक्ति की वाक्य रचना का हिस्सा है। लैम्ब्डा अभिव्यक्ति अनिवार्य रूप से एक प्रतिनिधि या एक अज्ञात विधि का छोटा रूप है उदाहरण के लिए, मान लें कि मेरे पास अक्षर की एक सरणी है जो वर्णमाला के अक्षर से मेल खाते हैं। मैं उस सरणी के सदस्यों को चुन सकता हूं जो निम्नलिखित LINQ अभिव्यक्ति के साथ "ई" से अधिक मूल्य रखता है:

var someLetters = alphabet.Where (एल => एल> "ई");

"=>" की बाईं ओर लैम्ब्डा अभिव्यक्ति का हिस्सा परीक्षण के लिए चर नाम (वर्णमाला के व्यक्तिगत सदस्यों पर सेट है) को पहचानता है और "=>" के दाईं ओर लैम्ब्डा अभिव्यक्ति का हिस्सा पहचानता है प्रसंस्करण। इस मामले में प्रोसेसिंग एक बूलियन मान का उत्पादन करती है, जहां तर्क यह निर्धारित करने के लिए उपयोग करता है कि वर्णमाला के प्रत्येक सदस्य कुछ लेटरर्स सरणी के माध्यम से पारित किया गया है या नहीं।