【发布时间】:2011-11-02 15:34:16
【问题描述】:
我目前正在学习 C#,目的是有效地使用 Razor 和 Umbraco,我有一点 PHP 背景和 JavaScript 方面的知识。
我遇到了IEnumerator 界面,我很难理解它。我在下面设置了一个代码 sn-p 来演示使用 foreach 循环遍历数组:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cardEnum
{
class suitsEnumerator
{
private static string[] suits = { "Hearts", "Spades", "Diamonds", "Clubs" };
public void showAll()
{
foreach(string x in suits){
System.Console.WriteLine(x);
}
}
}
class run
{
static void Main()
{
Console.WriteLine("The suits are:");
var suits = new suitsEnumerator();
suits.showAll();
Console.ReadKey();
}
}
}
有人可以解释为什么我什至需要使用IEnumerator,否则我可以很容易地循环遍历数组。我知道这是一个如此简单的问题,我就是想不出使用 IEnumerable 的理由。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
上面是一个很好的例子,说明了为什么 IEnumerator 很好。 (你知道你在上面使用 IEnumerator 对吧?)
-
这意味着您可以使用相同的语法 (
foreach) 来迭代任何实现IEnumerable(或具有GetEnumerator方法)的类。循环数组很容易,但是如果您有一个不允许索引访问的复杂类怎么办。 -
@JamieF:实际上,使用 Microsoft C# 编译器编译该代码不会使用
IEnumerator- 尽管这是一个实现细节。
标签: c# .net ienumerable