दिलचस्प पोस्ट
एंड्रॉइड पर पोर्ट्रेट मोड में ज़क्सिंग कैमरा सीएसएस: अस्पष्टता के साथ पृष्ठभूमि छवि सेट? जावा प्रोजेक्ट में एक्लिप्स डिफ़ॉल्ट प्रोजेक्ट को कैसे बदलना है जावास्क्रिप्ट ईएस 6 सरणी विशेषता "फैल ऑपरेटर" कैसे TensorFlow में एक Tensor वस्तु के मूल्य को मुद्रित करने के लिए? चल रहे प्रक्रियाओं को सूचीबद्ध करने के लिए लिनक्स एपीआई? Matplotlib भूखंड: धुरी, किंवदंतियों और सफेद रिक्त स्थान को हटाने नोटपैड ++ में खाली पंक्तियां निकालना कंटेनर विशिष्ट संस्करणों के बजाय std :: begin और std :: end का उपयोग करने के लिए 'आयात मॉड्यूल' या 'मॉड्यूल आयात से' ऑब्जेक्ट स्लाइसिंग क्या है? क्या स्थानीय संग्रहण को एक्सेल में निर्यात करने के लिए किसी भी एचटीएमएल 5 फार्केनेस का उपयोग करना संभव है? तत्व पाठ पर आधारित सीएसएस चयनकर्ता? एआरसी और पुल कास्ट एसटीआई, एक नियंत्रक

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

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

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

वेब के समाधान से एकत्रित समाधान "सी = अर्थ में '=>' सिंटैक्स क्या करता है?"

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

सी # 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 (एल => एल> "ई");

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