यह विधि संकेतन का अधिक संक्षिप्त रूप है। निम्नलिखित लगभग बराबर हैं:
int MyFunc(int pParam) {
return pParam;
}
Func<int, int> MyFunc = delegate (int pParam) { return pParam; };
Func<int, int> MyFunc = x => x;
int MyFunc(int pParam) =>
pParam;
एक लंबोदर अभिव्यक्ति के रूप में सोचें, "कुछ दिया, कुछ लौटाओ"। ऊपर के उदाहरण में, लैम्ब्डा एक्सप्रेशन x => xकहता है "दिया एक्स, रिटर्न एक्स", हालांकि लैम्ब्डा एक्सप्रेशन के लिए जरूरी नहीं है कि वह कुछ लौटाए, जिस स्थिति में आप उन्हें "एक्स दिए गए एक्स के साथ कुछ करें" के रूप में पढ़ सकते हैं।
यह भी ध्यान दें कि "डेलिगेट" नामक तीन तरह की चीजें हैं जो पहली बार में बहुत भ्रमित हो सकती हैं।
एक अनाम विधि delegateकीवर्ड का उपयोग करती है , लेकिन बिना नाम के एक विधि को परिभाषित करती है:
Func<int, int> = delegate (int x) { return x; };
संदर्भ के लिए एक विधि (अनाम, स्पष्ट या लंबोदर) को निर्दिष्ट करने से एक छिपी हुई Delegateआवरण वस्तु बनती है जो कि विधि को संदर्भित करने की अनुमति देती है। (मूल रूप से "प्रबंधित फ़ंक्शन पॉइंटर" का एक प्रकार है।)
और फिर, आप कीवर्ड का उपयोग करते हुए विधि हस्ताक्षर भी घोषित कर सकते हैं delegate:
public delegate int TestFunc(int x, int y);
TestFunc myFunc = delegate (int x, int y) { return x + y; };
यह एक नामांकित हस्ताक्षर की घोषणा करता है TestFuncजो दो intएस लेता है और एक रिटर्न देता है int, और फिर उस प्रकार के एक प्रतिनिधि संदर्भ की घोषणा करता है जिसे फिर मिलान हस्ताक्षर के साथ एक अनाम तरीका सौंपा जाता है।