0

に基づいたカスタム リストがありIEnumerable<T>ます。ここで、コンストラクターをオーバーロードし、取得した初期リストを使用していくつかのカスタム処理を実行したいと考えています。

//Constructor
public CustomList(IEnumerable<T> collection) : base(collection)
{
    //do some stuff with the collection e.g. iterate
    foreach(T obj in collection)
    {
        //do some stuff with obj
    }
}

そうすることさえ可能ですか?IEnumerable は で 1 回しか列挙できないためbase(collection)、ループは失敗すると思います。

編集: 誰にとっても完全に明確ではないため:私の基本クラスはIEnumerable<T>IEnumerable私の場合は1回しか列挙できません。

4

1 に答える 1

1

基本クラスが であると仮定するとList<T>、基本コンストラクターはすべてのアイテムを現在のオブジェクトに追加します。したがって、次の操作を何度でも実行できます。

foreach (T obj in this) { }

しかし、 から継承するのは悪い考えだと聞いたことがあります。代わりにList<T>実装する必要があります。それがなぜか思い出せません。IList<T>List<T>

于 2013-03-22T19:47:25.153 に答える