次のシグネチャを持つIListSource
メソッドを必要とする実装を行っています。GetList()
IList GetList()
私は .NET Framework 2 を使用しており、次のように IList を実装するオブジェクトを返したいと考えています。
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
しかし、次のようなコンパイル エラーが発生しますCannot implicitly convert type MyData to System.Collections.IList
。
type の新しいリストを作成しList<MyDataRow>
、入力してこのリスト オブジェクトを返すと、機能します。言い換えれば、これは機能します:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
IList<T>
しかし、 typeからに取得するためだけにリストを再作成する必要があるのは非常に非効率的IList
です。を返せるのに を返せList<MyDataRow>' from 'GetList()
ないのはなぜIList<MyDataRow>
ですか? IList<MyDataRow>
新しいリストを再作成せずに返す方法を知っている人はいますか?
アップデート:
_mydata
メンバー変数は次のように宣言されます。
private MyData _mydata;
そしてMyData
宣言されています:
public class MyData : IList<MyDataRow>
{
....
}