नीचे कोड में:प्रश्न
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
मैं एक IEnumerable<I1>
करने के लिए अपने "listOfCI1" आवंटित करने में सक्षम हूँ (सहप्रसरण के कारण)
लेकिन कारण है कि मैं करने के लिए इसे प्रदान करने में सक्षम नहीं कर रहा हूँ एक IList<I1>
? उस मामले के लिए, मैं भी ऐसा नहीं कर सकते निम्नलिखित:
List<I1> listOfI12 = listOfCI1;
सहप्रसरण मुझे एक आधार प्रकार के एक व्युत्पन्न प्रकार आवंटित करने के लिए अनुमति नहीं करना चाहिए?
बीटीडब्ल्यू, यह बात बहुत अच्छी थी। –
@ अरनिस: धन्यवाद - मैंने इसे खुद का आनंद लिया, भले ही मुझे होकी कोकी वीडियो दिखाया न जाए ... –
जॉन, बीसीएल टीम ने भी जोड़ा (आईनेमेरेबल: आईनेमेरेबल), क्योंकि IENumerable आपको इसे सुरक्षित बनाने के लिए किसी नए सदस्य (यानी इसके अपरिवर्तनीय) को जोड़ने की अनुमति नहीं देता है। लेकिन दूसरी तरफ IList पर "आउट" नहीं जोड़ा गया क्योंकि यह उत्परिवर्तनीय है (अंतर्निहित सूची में एक अलग कार्यान्वयन जोड़ने के लिए संभव है?) –