c# - Why can't I pass List<T> to a generic constructor parameter although all contraints are met? -


मेरे पास निम्न कोड है:

  लोक क्लास नमूना क्लास & lt; T, टीकॉलक्शन & gt; जहां टैक्लुलेशन: क्लास, आईएलआईटीआईटी & lt; T & gt ;, IReadOnlyList & lt; T & gt; {निजी रीडोनली टीकॉलक्शन _collection; सार्वजनिक नमूना क्लास (): यह (नई सूची & lt; T & gt; ()) {} सार्वजनिक नमूना क्लास (TCollection संग्रह) {_collection = संग्रह; दुर्भाग्य से, डिफ़ॉल्ट कन्स्ट्रक्टर  सार्वजनिक नमूना क्लास () युक्त रेखा: यह (नई सूची & lt; T & gt; ()) {}  संकलित नहीं करता है त्रुटि संदेश कहता है:  तर्क 1: 'System.Collections.Generic.List' से 'TCollection'  में परिवर्तित नहीं किया जा सकता। 

ऐसा क्यों होता है? वास्तव में TCollection जेनेरिक पर दिए गए सभी कंटेंट्स को पूरा करता है: यह एक ऐसा वर्ग है जो IList & lt; T & gt; और IReadOnlyList & lt; T & gt;

आपकी मदद के लिए बहुत बहुत धन्यवाद।

संपादित करें: अपडेटेड कोड क्योंकि इसमें त्रुटियां हैं। < P>

ऐसा क्यों होता है?

समस्या यह है कि मैं इस तरह कोड लिख सकता हूं: <पूर्व> कक्षा X: आईआईएलआईटी & lt; int & gt ;, IReadOnlyList & lt; int & gt; {...}

और फिर इसे इस तरह उपयोग करने का प्रयास करें:

  var उदाहरण = नया नमूना क्लास & lt; int, X & gt; ();  

लेकिन सूची & lt; int & gt; से X पर कोई रूपांतरण नहीं है।

इस परिदृश्य की संभावना इसलिए आपको कंपाइलर त्रुटि संदेश मिलता है:

तर्क 1: 'System.Collections.Generic.List' से 'TCollection' में कनवर्ट नहीं किया जा सकता।

" सूची & lt; T & gt; " जो आप के लिए खोज रहे हैं, का डिफ़ॉल्ट प्राप्त करने के लिए, आप उस डिफॉल्ट कन्स्ट्रक्टर से छुटकारा पा सकते हैं और इसे निम्नलिखित के साथ बदल सकते हैं:

  स्थैतिक वर्ग नमूनाक्लास {सार्वजनिक स्थिर सैम्पल क्लास & lt; T, सूची & lt; T & gt; & gt; & Lt; T & gt; () {नया नमूना क्लास लौटें & lt; T, सूची & lt; T & gt; & gt; (नई सूची & lt; T & gt; ()); }}  

यह ट्यूप्ले के स्थैतिक वर्ग जैसा इसकी स्थिर Tuple.Create सामान्य विधि और गैर-स्थिर ट्यूपल एंड लेफ्टिनेंट; टी 1 & gt; , ट्यूपल & lt; T1, T2 & gt; , आदि वर्ग।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -