2013-05-16 5 views
10

मैं अनाम कार्यों के लिए सी # सिंटैक्स को समझने की कोशिश कर रहा हूं, और कुछ मुझे समझ में नहीं आता है। यह मान्य क्यों हैकोई इनपुट पैरामीटर के साथ बेनामी फ़ंक्शंस

Func<string, string> f = x => { return "Hello, world!"; }; 

लेकिन यह नहीं है?

Func<string> g = { return "Hello, world!"; }; 

उत्तर

23

दूसरा अभी भी लैम्ब्डा वाक्य रचना की आवश्यकता है:

Func<string> g =() => { return "Hello, world!"; }; 

पहले में, आप को प्रभावी ढंग से लिख रहे हैं:

Func<string, string> f = (x) => { return "Hello, world!"; }; 

लेकिन सी # जब निर्धारित करते समय आपको () बंद छोड़ दूँगी एक लैम्ब्डा अगर केवल एक ही तर्क है, तो आपको इसके बजाय x => लिखने दें। जब कोई तर्क नहीं होता है, तो आपको () शामिल करना होगा।

यह सी # भाषा विनिर्देश की धारा 7.15 में निर्दिष्ट किया जाता:

एक एकल, परोक्ष टाइप किया पैरामीटर के साथ एक गुमनाम समारोह में, कोष्ठकों पैरामीटर सूची से हटाया जा सकता है। दूसरे शब्दों में, प्रपत्र

(परम) => की एक गुमनाम समारोह expr

परम => के लिए expr

-2

आप जानना चाहते हैं समारोह परिभाषा की जरूरत संक्षिप्त जा सकता है:

एक पैरामीटर एक पैरामीटर को एन्सेप्लेट करता है और एक मान देता है o एफ TResult पैरामीटर द्वारा निर्दिष्ट प्रकार।

संदर्भ:

Microsoft

+0

'समारोह ' (जो क्या अपने दूसरे उदाहरण उपयोग कर रहा है) एक समारोह है कि कोई पैरामीटर लेता है और एक स्ट्रिंग रिटर्न है। – Servy

+0

वह इसका उपयोग कर रहा है: http://msdn.microsoft.com/en-us/library/bb534960.aspx –

संबंधित मुद्दे