c# - Write a method which accepts a lambda expression -


मेरे पास निम्न हस्ताक्षर के साथ एक विधि है:

  शून्य MyMethod (प्रतिनिधि डे) { }; शून्य MyMethod (अभिव्यक्ति एक्सपी) {}; शून्य MyMethod (वस्तु obj) {};  

हालांकि, यह संकलित करने में विफल रहता है:

  MyMethod ((int a) = & gt; a)  

निम्न त्रुटि के साथ:

  "ऑब्जेक्ट टाइप करने के लिए लैम्ब्डा अभिव्यक्ति को परिवर्तित नहीं किया जा सकता क्योंकि यह कोई प्रतिनिधि प्रकार नहीं है"  

यह काम क्यों नहीं करता ?

संपादित करें: मुझे पता है कि यह काम करता है कंपाइलर इस मामले में मुझे लगता है कि लैंबडा अभिव्यक्ति को एक delgate में संकलित करता है।

  शून्य MyMethod (Func & lt; int, int & gt; d) {};  

तरह का संबंध है,

क्योंकि प्रकार system.Delegate isn एक "प्रतिनिधि" यह सिर्फ आधार वर्ग है आपको सही हस्ताक्षर के साथ एक प्रतिनिधि प्रकार का उपयोग करना होगा। निम्नानुसार अपना तरीका निर्धारित करें:

  शून्य MyMethod (Func & lt; int, int & gt; objFunc)  

संपादित करें:

MyMethod (वस्तु ) काम नहीं करता क्योंकि लैम्ब्डा अभिव्यक्ति का कोई स्वयं का प्रकार नहीं है, लेकिन इस प्रकार का स्थान उस स्थान के प्रकार से अनुमान लगाया गया है जिसे इसे सौंपा गया है। इसलिए ऑब्जेक्ट या तो काम नहीं करता है आपको सही हस्ताक्षर के साथ एक प्रतिनिधि प्रकार का उपयोग करना है।


Comments

Popular posts from this blog

ios - Form Sheet content disappearing -

MySql variables and php -

c++ - an enclosing-function local variable cannot be referenced in a lambda body unless if it is in capture list -