ない。
列挙子が必要で、基になるIEnumerable
型 ( extends をList
実装する) が既にある場合は、次のように返します。IList
IEnumerable
public IEnumerator<SomeType> GetEnumerator ()
{
return _list.GetEnumerator();
}
それ以外の場合、実際にリストが必要な場合、つまりインデックスを使用したランダム アクセスが必要な場合は、IList
;を返します。実際にその内部実装型、つまり を返したい場合はList
、それをアクセス可能なプロパティにするだけです。ただし、プライベート セッターはリストの変更 (項目の追加または削除など) を妨げないことに注意してください。それが必要な場合は、代わりに読み取り専用リストを返します。
public IList<SomeType> List
{
get { return _list.AsReadOnly(); }
}
収量について
利回りリターンの実際の使用法を教えてください。
yield return
実際にジェネレーターがある場合、次のアイテムを実際に生成する必要がある場合に便利です。簡単な例は、乱数を求め続ける限り、別の乱数を提供する乱数ジェネレーターです。必ずしも終わりがあるわけではありませんが、開始する前に数がわからない場合があります。
別の一般的な使用法は、外部ソースからデータを取得するものです。たとえば、Web サービスからのアイテムのリストです。アイテムの数がわからない前に、実際に必要なアイテムの数が必ずしもわからない場合があります (一度に 1 つずつ表示するエンドレス ディスプレイで表示したい場合があるため)。その場合、次のようにすることができます。
IEnumerable<Item> GetItems()
{
while (Service.HasMorePages())
{
foreach (Item item in Service.GetNextPage())
{
yield return item;
}
}
yield break;
}
GetNextPage
一度にアイテムのリストを常に返し、N
すでに受け取ったアイテムよりも多くのアイテムが必要な場合はいつでも次のリストを取得します。