मैं List<ObjBase>
को List<Obj>
के रूप में क्यों नहीं डाल सकता? काम क्यों नहीं निम्नलिखित है:सी # सूची <ObjBase> सूची के रूप में <Obj>
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
return getSomeStuff() as List<Obj>;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
इसके बजाय मैं यह करने के लिए है:
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
List<ObjBase> returnedList = getSomeStuff();
List<Obj> listToReturn = new List<Obj>(returnedList.Count);
foreach (ObjBase currentBaseObject in returnedList)
{
listToReturn.Add(currentBaseObject as Obj);
}
return listToReturn;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
मैं विजुअल स्टूडियो 2008 में निम्न त्रुटि (पठनीयता के लिए छोटा):
नहीं कर सकते एक संदर्भ रूपांतरण, मुक्केबाजी रूपांतरण, अनबॉक्सिंग रूपांतरण, रैपिंग रूपांतरण, या शून्य प्रकार रूपांतरण के माध्यम से 'सूची' में 'सूची' को रूपांतरित करें
धन्यवाद।
-1:
कोड अपनी लाइब्रेरी में जोड़ने के लिए यहाँ कई सवाल का Dup, सहित http://stackoverflow.com/questions/1263489/how- do-i-upcast-a-collection-of-base-class-in-c/1263514 # 1263514 और –
नीचे दिए गए उत्तर में उद्धृत किए गए लोगों [.NET कास्टिंग जेनेरिक सूची] का संभावित डुप्लिकेट (http://stackoverflow.com/प्रश्न/674715/नेट-कास्टिंग-जेनेरिक-सूची) –