IEnumerable 和 IEnumerator 接口
2009-02-20 17:10
260 查看
实现IEnumerable接口的类,可以支持foreach循环遍历对象的集合元素
IEnumerable:
IEnumerator:
sample:
using System;
using System.Collections;
namespace ConsoleApplication1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
CStringEnum se = new CStringEnum();
foreach (string s in se)
{
Console.WriteLine(s);
}
Console.Read() ;
}
}
class CStringEnum : IEnumerable, IEnumerator
{
string[] items = new string[16];
int index = -1;
public CStringEnum()
{
for(int i=0; i<items.Length; ++i)
items[i] = "s" + i.ToString();
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
// TODO: Add StringCollection.GetEnumerator implementation
return (IEnumerator)this;
}
#endregion
#region IEnumerator Members
public void Reset()
{
// TODO: Add CStringEnum.Reset implementation
index = -1;
}
public object Current
{
get
{
// TODO: Add CStringEnum.Current getter implementation
return items[index];
}
}
public bool MoveNext()
{
// TODO: Add CStringEnum.MoveNext implementation
index++;
return index >= items.Length ? false : true;
}
#endregion
}
}
IEnumerable:
IEnumerator GetEnumerator() | 返回可循环访问集合的枚举数。 |
object Current | 获取集合中的当前元素。 |
bool MoveNext() | 将枚举数推进到集合的下一个元素。 如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。 |
void Reset() | 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 |
using System;
using System.Collections;
namespace ConsoleApplication1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
CStringEnum se = new CStringEnum();
foreach (string s in se)
{
Console.WriteLine(s);
}
Console.Read() ;
}
}
class CStringEnum : IEnumerable, IEnumerator
{
string[] items = new string[16];
int index = -1;
public CStringEnum()
{
for(int i=0; i<items.Length; ++i)
items[i] = "s" + i.ToString();
}
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
// TODO: Add StringCollection.GetEnumerator implementation
return (IEnumerator)this;
}
#endregion
#region IEnumerator Members
public void Reset()
{
// TODO: Add CStringEnum.Reset implementation
index = -1;
}
public object Current
{
get
{
// TODO: Add CStringEnum.Current getter implementation
return items[index];
}
}
public bool MoveNext()
{
// TODO: Add CStringEnum.MoveNext implementation
index++;
return index >= items.Length ? false : true;
}
#endregion
}
}
相关文章推荐
- IEnumerable 和 IEnumerator 接口
- IEnumerable 和 IEnumerator 接口
- IEnumerable接口与IEnumerator
- IEnumerable和IEnumerator接口
- C# 通过实现IEnumerable/IEnumerator接口 完成foreach遍历
- 理解IEnumerator+IEnumerable这种接口思想
- 如何自己实现IEnumerable和IEnumerator接口以支持foreach语句
- 实现IEnumerable和IEnumerator接口以支持foreach语句
- 如何实现IEnumerable<T>和IEnumerator接口,一个ASP.NET MVC日志模型的实现
- C#基础知识系列九(对IEnumerable和IEnumerator接口的糊涂认识)
- 实现了IEnumerable接口的GetEnumerator 即可使用 Foreach遍历,返回一个IEnumerator对象
- C#学习笔记(七)—–集合--IEnumerable和IEnumerator接口
- C#基础知识系列九(对IEnumerable和IEnumerator接口的糊涂认识)
- IEnumerable 和 IEnumerator 接口
- c#中foreach与接口IEnumerator和IEnumerable
- C#如何实现自定义集合的IEnumerable 和 IEnumerator 接口并使用foreach访问自定义集合
- 一个类型要想支持foreach则必须实现IEnumerable,IEnumerator两个接口。
- IEnumerable接口与IEnumerator接口
- IEnumerable 和 IEnumerator 接口
- 《转》IEnumerable、IEnumerator两个接口的认识