此代码生成两个编译时错误:
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它失败的类型的内部组件有什么不同?
我有以下类层次结构:
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();