2011-11-22 18 views
5

परेशान।नामित पैरामीटर का उपयोग करते समय यह सी # कोड संकलित क्यों नहीं होता है?

class Test 
{ 
    void Main() 
    { 
     F(() => "");    // ok 
     F(named:() => "");   // 'T' cannot be inferred from the usage! 
     F<string>(() => "");  // ok 
     F<string>(named:() => ""); // ok 
    } 

    void F<T>(Func<T> named) { } 
} 

क्या कोई मुझे बता सकता है कि एफ को दूसरी कॉल संकलित करने में विफल क्यों होती है?

(ध्यान दें कि यह एक महत्वपूर्ण रूप से छीन लिया गया उदाहरण है, यही कारण है कि यह सिंथेटिक लगता है। वास्तविक मामले में मैं आया, 'नाम' से पहले कुछ डिफ़ॉल्ट पैरामीटर हैं और इसलिए नामित पैरामीटर आवश्यक है। और इसलिए, जाहिरा तौर पर कॉल करने वाले को 'टी' की स्पष्ट विनिर्देश है।)

+1

संकलक के प्रतिनिधि प्रकार निष्कर्ष में एक अपर्याप्तता की तरह लगता है। – Jeff

+0

लगता है ध्वनि। और यदि आप उस टिप्पणी को उत्तर में बनाते हैं तो मैं इसे स्वीकार करूंगा। – scobi

उत्तर

1

संकलक के प्रतिनिधि प्रकार निष्कर्ष में एक अपर्याप्तता ... खेद मैं और अधिक की पेशकश नहीं कर सकते हैं की तरह लगता है।

+0

डाउनवोट क्यों? कोई भी नहीं जवाब देने के लिए परवाह है और लेखक ने कहा "होने की संभावना लग रहा है। और अगर आप एक जवाब में कि टिप्पणी करते हैं मैं इसे स्वीकार करेंगे।"। – Jeff

+0

खैर, कम से कम मैं इसे वापस 0 करने के लिए अपने वोट के साथ धक्का सकता है, हे। – scobi

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