index
できるのは、本物のことだけです。array
usingにインデックスをoperator []
付けるか、a にインデックスを付けることができますlist
(少なくとも C# では、より正式なコンピューター サイエンスに興味がある人はうんざりするでしょう)。
IEnumerable<T>
単純な手段を列挙することは、すべての項目を順番に調べることができることを意味するため、インデックスを作成することはできません。ただし、特定の項目にジャンプすることはできません。
string text = "hello";
これは列挙しています:
foreach( var c in text ) Console.WriteLine(c);
これは索引付けを使用します。
for( int i = 0 ; i < text.Length ; i++ ) Console.WriteLine(text[i]);
これは実際のデータです:
var arr = new int[15];
これは実際のではありません。 にはデータがありませんnumber
。列挙型でデータを配信するという約束にすぎません。実際のデータを取得するには、それを具体化する必要があります。
var number = GetNumbers();
これにより、無限の数が生成されます。これは実際のデータではありません。列挙した後に実際のデータを生成する方法のレシピのようなものです。
public IEnumerable<int> GetNumbers()
{
while(true) yield return 1;
}