【发布时间】:2012-09-19 13:36:26
【问题描述】:
我正在实现IListSource,它需要一个具有以下签名的方法GetList():
IList GetList()
我正在使用 .NET 框架 2,我想返回一个实现 IList 的对象,如下所示:
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
但我得到一个编译错误:Cannot implicitly convert type MyData to System.Collections.IList。
如果我创建一个List<MyDataRow> 类型的new 列表,填充它并返回这个列表对象,那么它就可以工作了。换句话说,这行得通:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
但是,为了将其从类型IList<T> 获取到IList,必须重新创建列表似乎非常低效。为什么我可以返回List<MyDataRow>' from 'GetList(),但不能返回IList<MyDataRow>?有谁知道我在不重新填充新列表的情况下返回IList<MyDataRow> 的方法?
更新:
声明了_mydata成员变量:
private MyData _mydata;
并声明了MyData:
public class MyData : IList<MyDataRow>
{
....
}
【问题讨论】:
-
_mydata字段声明的类型是什么? -
@NicoleCalinoiu:根据他得到的错误信息,是
MyData。
标签: c# .net list generics c#-2.0