के साथ जेनेरिक contravariant का उपयोग कर मैं सी # जेनेरिक सीख रहा हूँ और परीक्षण उद्देश्यों के लिए कुछ डमी कोड बना रहा हूँ। तो, मैं in Generic Modifier का परीक्षण कर रहा हूं, जो निर्दिष्ट करता है कि प्रकार पैरामीटर contravariant है।IList और IENumerable
नीचे इंटरफेस को देखते हुए:
[CS1961] अमान्य विचरण: प्रकार पैरामीटर 'टी' invariantly होना चाहिए वैध
public interface IInterfaceTest<in T> { void Method(T value); void Method(IList<T> values); void Method(IEnumerable<T> values); }
जब संकलन, मैं त्रुटि संदेश मिल रहा 'IInterfaceTest.Method (IList)' पर। 'टी' contravariant है।
त्रुटि केवल void Method(IEnumerable<T> values)
लाइन से संबंधित है। यदि यह लाइन हटा दी गई है, तो सभी ठीक काम करते हैं।
तो मेरे सवाल है: मैं IEnumerable
साथ सामान्य contravariant का उपयोग क्यों कर सकते हैं लेकिन IList
साथ नहीं करता है? क्या मैं कुछ भूल गया हूँ?
धन्यवाद।
'IList' नहीं है, और नहीं हो सकता है, covariant। –
SLaks
@ स्लक्स: मुझे लगता है कि ओपी इसे प्राप्त करता है, लेकिन क्यों? (जो मुझे भी मदद करेगा) – Stefan
क्योंकि यह उत्परिवर्तनीय है। https://stackoverflow.com/a/2033921/34397 – SLaks