gpt4 book ai didi

C# 将 List 转换为 List

转载 作者:IT王子 更新时间:2023-10-29 04:18:08 25 4
gpt4 key购买 nike

为什么我不能投 List<ObjBase>作为List<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>();
}
}

我在 Visual Studio 2008 中收到以下错误(为了便于阅读而缩短):

Cannot convert type 'List' to 'List' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion

谢谢。

最佳答案

您可以使用 System.Linq 中的 CastToList 扩展方法将其放在一行中。

代替

internal List<Obj> returnStuff()
{
return getSomeStuff() as List<Obj>;
}

这样做:

internal List<Obj> returnStuff()
{
return getSomeStuff().Cast<Obj>().ToList();
}

关于C# 将 List<ObjBase> 转换为 List<Obj>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com