カスタム列挙を使用したリアルタイムの例を理解するために、さまざまな Web サイトにアクセスした後、この行を削除しています。私は例を得ました。しかし、それらは私を混乱に導きます。
例
テイク 1
class NumberArray
{
public int[] scores;
public NumberArray()
{
}
public NumberArray(int[] scores)
{
this.scores = scores;
}
public int[] Scores
{
get {return scores;}
}
}
テイク 2
public class Enumerator : IEnumerator
{
int[] scores;
int cur;
public Enumerator(int[] scores)
{
this.scores = scores;
cur = -1;
}
public Object Current
{
get {
return scores[cur];
}
}
public void Reset()
{
cur = -1;
}
public bool MoveNext()
{
cur++;
if (cur < scores.Length)
return true;
else return false;
}
}
public class Enumerable : IEnumerable
{
int[] numbers;
public void GetNumbersForEnumeration(int[] values)
{
numbers = values;
for (int i = 0; i < values.Length; i++)
numbers[i] = values[i];
}
public IEnumerator GetEnumerator()
{
return new Enumerator(numbers);
}
}
主要
static void Main()
{
int[] arr = new int[] { 1, 2, 3, 4, 5 };
NumberArray num = new NumberArray(arr);
foreach(int val in num.Scores)
{
Console.WriteLine(val);
}
Enumerable en = new Enumerable();
en.GetNumbersForEnumeration(arr);
foreach (int i in en)
{
Console.WriteLine(i);
}
Console.ReadKey(true);
}
テイク 2 では、カスタム イテレーションに従って、テイク 1 で行ったのと同じ整数配列をイテレートしました。
おそらく、リアルタイムのカスタム反復の必要性を逃したのでしょう。既存の繰り返し機能ではできないタスクについて説明してもらえますか? (学校教育を終えたばかりなので、きちんと理解できるように簡単な例を挙げてください)。
更新: これらの例は、いくつかのサイトから取得しました。そのコードには特別なことは何もありません。カスタム反復を使用しなくても非常に簡単に実現できます。私の興味は、カスタム反復が非常に便利な実際のシナリオを知ることでした。