IEnumerabl 和 IEnumertator
- public interface IEnumerable
- {
- IEnumerator GetEnumerator();
- }
IEnumerator 接口
- public interface IEnumerator
- {
- bool MoveNext();
- object Current { get; }
- void Reset();
- }
实现IEnumerable接口的话需要实现其 IEnumerator.GetEnumerator 方法,其后也是需要实现 IEnumerator接口的方法(迭代模板)
- public class ListEnumerator : IEnumerator
- {
- private int _currentIndex = -1;
- public bool MoveNext()
- {
- _currentIndex++;
- return (_currentIndex < _objects.Count);
- }
- public object Current
- {
- get
- {
- try
- {
- return _objects[_currentIndex];
- }
- catch (IndexOutOfRangeException)
- {
- throw new InvalidOperationException();
- }
- }
- public void Reset()
- {
- _currentIndex = -1;
- }
- }
在
c#
中,所有集合(如列表、字典、堆栈、队列等)是可枚举的,因为它们实现IEnumerable接口。所以是字符串。 您可以使用foreach块遍历字符串到字符串中的每个字符。