मैं समझने की कोशिश कर रहा हूं कि सी # में संस्करण और जेनेरिक के संबंध में एक विशिष्ट व्यवहार संकलित क्यों नहीं होता है।संस्करण और खुले जेनेरिक IReadOnlyList
class Matrix<TLine> where TLine : ILine
{
TLine[] _lines;
IReadOnlyList<ILine> Lines { get { return _lines; } } //does not compile
IReadOnlyList<TLine> Lines { get { return _lines; } } //compile
}
मैं नहीं समझ सकता क्यों इस के रूप में काम नहीं करता है:
_lines
, प्रकारTLine[]
की जा रही है, को लागू करता हैIReadOnlyList<TLine>
IReadOnlyList<out T>
, एक प्रकार जेनेरिक इंटरफेस है, जिसका अर्थ है जहाँ तक मैं समझता हूं किIReadOnlyList<TLine>
को लागू करने वाले कुछ भीIReadOnlyList<ILine>
मुझे लगता है कि यह होना चाहिए क्योंकि प्रकार की बाधा को ध्यान में नहीं रखा जाता है, लेकिन मुझे शक है।
मुझे लगता है कि आपको 'TLine' -' वर्ग मैट्रिक्स पर 'वर्ग' बाधा जोड़ने की आवश्यकता है जहां TLine: ILine, class'। 'IReadOnlyList 'का कॉन्वर्सिस लागू नहीं होता है यदि' टी' एक मान प्रकार है, तो आपको संदर्भ प्रकार होने के लिए' TLine' को प्रतिबंधित करने की आवश्यकता है। –
Lee
@Lee मुझे यह नहीं पता था कि, आपको इसे उत्तर के रूप में पोस्ट करना चाहिए क्योंकि यह ओपीएस समस्या हल करता है;) – nozzleman