मैं _ => _.method()
एक-पंक्ति, विधि-कॉल लैम्ब्डा के लिए भी दूसरा उपयोग करता हूं , क्योंकि यह निर्देश के संज्ञानात्मक वजन को कम करता है। विशेष रूप से जेनेरिक, लेखन का उपयोग करते समयx => x.method()
बस "व्हाट 'x?" क्या यह अंतरिक्ष में एक समन्वय है? "
निम्नलिखित मामले पर विचार करें:
Initialize<Client> ( _=>_.Init() );
जेनरिक कॉल के साथ प्रयोग किया जाता है, इस मामले में अंडरस्कोर "बाईपास प्रतीक" के रूप में काम करता है। यह अतिरेक से बचता है, यह परिभाषित करते हुए कि तर्क का प्रकार स्पष्ट है और उपयोग से इसका अनुमान लगाया जा सकता है - ठीक उसी तरह जब आप एक प्रकार की घोषणा को रोकने के लिए 'var' का उपयोग करते हैं। लिख रहे हैंclient=>client.Init()
यहाँ बस किसी भी अर्थ को जोड़ने के बिना निर्देश को लंबा कर देगा।
जाहिर है, यह विधि को पारित करने के लिए लागू नहीं होता है, जिसे विवरणात्मक रूप से नामित किया जाना चाहिए। उदाहरण के लिए .:Do( id=>Log(id) );
विधि कॉल के लिए एकल-अंडरस्कोर-पैरामीटर उपयोग एक-लाइनर के बजाय कोड के एक ब्लॉक का उपयोग करते समय शायद ही उचित है, क्योंकि लैम्बडा पहचानकर्ता अपनी जेनरिक परिभाषा से डिस्कनेक्ट हो जाता है। सामान्य तौर पर जब समान पहचानकर्ता का पुन: उपयोग किया जाना है, तो इसे एक वर्णनात्मक नाम दें।
लब्बोलुआब यह है कि शब्दशः विस्मृति के लिए केवल उचित है, विशेष रूप से लैम्ब्डा के लिए, जो पहली बार में गुमनाम प्रतिनिधियों के निर्माण को सरल बनाने के लिए बनाए गए थे। किसी भी मामले में, सामान्य ज्ञान का उपयोग किया जाना चाहिए, जो कि सुगमता और सुगमता को संतुलित करता है। यदि प्रतीक वास्तविक कार्यक्षमता के लिए केवल "हुक" है, तो एक वर्ण पहचानकर्ता पूरी तरह से ठीक है। इंडेक्स के रूप में फॉर-लूप और "आई" और "जे" अक्षरों के साथ ऐसा ही है।