相关疑难解决方法(0)

为什么我不能将List <List <Foo >>传递给IEnumerable <IEnumerable <Foo >>

此代码生成两个编译时错误:

private void DoSomething()
{
    List<List<Foo>> myFoos = GetFoos();

    UseFoos(myFoos);
}

private void UseFoos(IEnumerable<IEnumerable<Foo>>)
{

}
Run Code Online (Sandbox Code Playgroud)

The best overloaded method match for 'NameSpace.Class.UseFoos(System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<Foo>>)' has some invalid arguments

Argument 1: cannot convert from 'System.Collections.Generic.List<System.Collections.Generic.List<Foo>>' to 'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<Foo>>'

施法IEnumberable<List<Foo>>不是问题.铸造List它失败的类型的内部组件有什么不同?

c# generics .net-3.5

11
推荐指数
1
解决办法
1412
查看次数

上传和通用列表

我有以下类层次结构:

public abstract class BaseData
{
  //some properties
}

public class CoData : BaseData
{
  //some properties
}
Run Code Online (Sandbox Code Playgroud)

我正在使用一个需要返回类型的方法List<BaseData>.在方法中,我可以访问List<CoData>

public List<BaseData> Save()
{
  List<CoData> listCoData = GetData();
  return listCoData;
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我可以从a CoData到a BaseData.但是,当我有一个列表时,即使我明确地试图进行类型转换,它也会出错.

错误:

Error   118 Cannot implicitly convert type 'System.Collections.Generic.List<CoData>' to System.Collections.Generic.List<BaseData>'
Run Code Online (Sandbox Code Playgroud)

编辑:

mquander的转换方法在3.0中似乎对我有用

转发也是以同样的方式完成的吗?从

即,我可以这样做 - List<CoData> listCoData = listBaseData.Cast<BaseData>().ToList();

.net c#

4
推荐指数
2
解决办法
4425
查看次数

标签 统计

c# ×2

.net ×1

.net-3.5 ×1

generics ×1