在访问了不同的网站以尝试了解使用自定义枚举的实时示例后,我放弃了这一行。我有例子。但它们让我感到困惑。
例子
拿 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 次中相同的整数数组。为什么我要绕过灌木丛来使用自定义迭代来迭代整数?
可能我错过了实时自定义迭代需求。你能解释一下我不能用现有的迭代工具完成的任务吗?(我刚毕业,举个简单的例子,让我能正确理解)。
更新: 我从一些网站上拿了这些例子。该代码没有什么特别之处,即使不使用自定义迭代,我们也可以非常简单地实现它,我的兴趣是了解自定义迭代非常方便的真实场景。