निम्न उदाहरण पर विचार करें:मैं दो सामान्य प्रकार के पैरामीटर के साथ कॉन्वर्सिस का उपयोग क्यों नहीं कर सकता?
class Base {}
class Derived : Base {}
class Test1
{
private List<Derived> m_X;
public IEnumerable<Base> GetEnumerable()
{
return m_X;
}
}
यह ठीक संकलित, क्योंकि IEnumerable<T>
T
में covariant है।
हालांकि, अगर मैं बिल्कुल वही बात है, लेकिन अब जेनरिक के साथ कार्य करें:
class Test2<TBase, TDerived> where TDerived : TBase
{
private List<TDerived> m_X;
public IEnumerable<TBase> GetEnumerable()
{
return m_X;
}
}
मैं संकलक त्रुटि मिलती है
कनवर्ट नहीं कर सकता अभिव्यक्ति प्रकार 'System.Collection.Generic.List' वापस 'System.Collection.Generic.IEnumerable'
मैं यहां क्या गलत कर रहा हूं?
मुझे लगता है कि 'वापसी m_X.Cast();' का उपयोग करके, एक स्पष्टीकरण होना चाहिए, 'आपके मामले को हल करेगा। –
AgentFire