は私の例を提供してみましょう:IEnumerable <T>がシーケンスジェネレータまたは真のコレクションであるかどうかを判断する方法はありますか?
public void DoStuff(IEnumerable<T> sequence)
{
if (/* is lazy sequence */) throw ...
// Do stuff...
}
そして、私は潜在的に無限のシーケンスを防ぐためにしたい:
は、私は方法があるとします。
編集:
無限のコレクションに対する保護、詳述するとは、唯一の用途です。ジョンが言及したように。あなたは簡単に無限のIListを持つことができます。いい視点ね。
他の用途は、データが潜在的に反復不可能であるかどうかを検出することです。ランダムジェネレータのように。真のコレクションにはすでにデータがあり、それを2回繰り返すことで同じデータが得られます。
さて、 'ICollection'(注:これはまだ無限でも、怠け者かもしれませんが、 "コレクション"です)。 –
jason
「真のコレクション」の要件は何ですか? O(1)のランダムアクセス?リンクリストは許可されていますか? File.ReadLinesの結果は真のコレクションですか? – dtb
IEnumerableは、言及されたもの(コレクション対ジェネレータ)によって充足可能なインターフェイスなので、私は「ラスト」を呼び出すようなハックを試みることができますが、それが "ジェネレータ"無限です... – Yahia