求IEnumerable 接口的简单示例

BlueskyGreenearth 2005-06-17 11:52:45
菜鸟,求关于使用IEnumerable 接口的简单示例
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
epimetheus 2005-06-18
  • 打赏
  • 举报
回复
一般都是继承IEnumerable接口。在实现此接口的GetEnumerator方法时再实现IEnumerator接口
代码如下:
/// <summary>
/// 返回可循环访问集合的枚举数。
/// </summary>
/// <returns>可用于循环访问集合的 System.Collections.IEnumerator。</returns>
public System.Collections.IEnumerator GetEnumerator()
{
return new SheetsEnumerator(this.m_Sheets);
}
/// <summary>
/// 内部类实现foeach支持
/// </summary>
internal class SheetsEnumerator: System.Collections.IEnumerator
{
private int currentItem = 0;
private int iCount = 0;
private System.Collections.IEnumerator enumerator = null;
/// <summary>
/// 构造函数
/// </summary>
internal SheetsEnumerator(MSExcel.Sheets mWorksheets)
{
this.currentItem = 0;
this.iCount = mWorksheets.Count;
this.enumerator = mWorksheets.GetEnumerator();
}

#region IEnumerator 成员
/// <summary>
/// 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。
/// </summary>
public void Reset()
{
this.currentItem = 0;
this.enumerator.Reset();
}
/// <summary>
/// 获取集合中的当前元素。
/// </summary>
public object Current
{
get
{
WorkSheet mWorkSheet = null;
if(this.enumerator.MoveNext())
mWorkSheet = new WorkSheet(this.enumerator.Current as MSExcel.Worksheet);
return mWorkSheet;
}
}
/// <summary>
/// 将枚举数推进到集合的下一个元素。
/// </summary>
/// <returns>如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。</returns>
public bool MoveNext()
{
bool blnRet = false;
this.currentItem++;
if(this.currentItem <= this.iCount)
blnRet = true;
return blnRet;
}
#endregion
}
#endregion
cheery_ke 2005-06-17
  • 打赏
  • 举报
回复
// ========================================================================================
// Cheery Studio Development Tools
// NodeSimple.cs
// ========================================================================================
//
// Information
// NAMESPACE: CheeryStudio.DevTools.WebForm.UI.TreeRel
// CLASSNAME: NodeSimple
// EXTEND FROM: NULL
// IMPLEMENT: System.Collections.IEnumerator
// REFERENCE: System.dll
//
// ========================================================================================
// Release History
// VERSION MENDER DATE DESCRIPTION
// 1.0 Cheery 9/8/2004 Create
//
// ========================================================================================
// Copyright (C) 2004 Cheery Studio
// All rights reserved.
// ========================================================================================

namespace CheeryStudio.DevTools.WebForm.UI.TreeRel
{
using System;
using System.Collections;

/// <summary>
/// 简单迭代支持
/// </summary>
public class NodeSimple : System.Collections.IEnumerator
{
private int _index = -1;
private NodeCollection _nodes = null;

/// <summary>
/// 简单迭代对象
/// </summary>
/// <param name="nodeCollection">被迭代的目标</param>
public NodeSimple( NodeCollection nodeCollection )
{
_nodes = nodeCollection;
}

#region IEnumerator 成员

/// <summary>
/// 将游标置于当前集合之首
/// </summary>
public void Reset()
{
_index = -1;
}

/// <summary>
/// 当前对象
/// </summary>
public object Current
{
get
{
return (Node)_nodes[_index];
}
}

/// <summary>
/// 将游标向下移动一位
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
if( _index < _nodes.Count - 2 )
{
_index++;
return true;
}
return false;
}

#endregion
}
}

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧