C# 实现简单的迭代器模式

简介: 迭代器模式提供一种顺序访问聚合对象元素的方法,无需暴露其内部结构。通过定义统一的迭代接口,实现对不同集合的遍历操作,增强容器的封装性和算法的复用性。

提供一种方法顺序访问聚合对象中的各个元素,而不暴露其内部表示。

// 迭代器接口
public interface IIterator<T>
{
    bool HasNext();
    T Next();
}
// 聚合接口
public interface IAggregate<T>
{
    IIterator<T> CreateIterator();
}
// 具体聚合类
public class MyCollection<T> : IAggregate<T>
{
    private readonly List<T> _items = new List<T>();
    public void Add(T item) => _items.Add(item);
    public T Get(int index) => _items[index];
    public int Count => _items.Count;
    public IIterator<T> CreateIterator()
    {
        return new MyIterator<T>(this);
    }
}
// 具体迭代器类
public class MyIterator<T> : IIterator<T>
{
    private readonly MyCollection<T> _collection;
    private int _index = 0;
    public MyIterator(MyCollection<T> collection) => _collection = collection;
    public bool HasNext() => _index < _collection.Count;
    public T Next() => _collection.Get(_index++);
}
// 调用示例
public static void TestIterator()
{
    var collection = new MyCollection<string>();
    collection.Add("A");
    collection.Add("B");
    collection.Add("C");
    var iterator = collection.CreateIterator();
    while (iterator.HasNext())
    {
        Console.WriteLine("元素: " + iterator.Next());
    }
}
相关文章
|
前端开发 网络协议 JavaScript
在Spring Boot中实现基于WebSocket的实时通信
在Spring Boot中实现基于WebSocket的实时通信
|
3月前
|
C#
C# 随机数生成:Random 类用法
Random类用于生成伪随机数,适用于游戏、验证码、测试等场景。通过静态实例避免重复创建,确保随机性。提供整数、小数、布尔值及指定长度的随机字符串生成方法,使用简便且高效。注意需复用实例防止种子重复导致随机数相同。
|
3月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
3月前
|
JSON C# 数据格式
C# 实现简单的 HTTP 请求工具(POST 补充)
该代码实现了一个基于 HttpClient 的异步 HTTP POST 请求工具类,支持以 JSON 格式提交数据并反序列化响应结果,具备异常处理机制,适用于 .NET 环境下的轻量级网络请求操作。
|
3月前
|
C#
C# 实现发送邮件功能(SMTP)
通过SMTP协议实现邮件发送,支持文本与附件,需配置邮箱SMTP信息(如QQ邮箱授权码)。示例代码展示C#中如何使用SmtpClient发送邮件,适用于QQ、163、Gmail等主流邮箱服务。
|
3月前
|
存储 数据库连接 C#
C# 配置文件读取:App.config 用法
App.config用于存储程序配置(如数据库连接、接口地址),避免硬编码,提升可维护性。通过ConfigurationManager读取配置,支持字符串、整型、布尔值及连接字符串的获取,需引用System.Configuration程序集。
|
3月前
|
C#
C# 实现简单的定时任务工具
基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。
|
3月前
|
存储 开发框架 缓存
C# 实现图片验证码的 WebAPI 版(ASP.NET Core)
基于ASP.NET Core实现的验证码服务,生成带干扰线和随机旋转文字的4位图文验证码,支持内存存储与验证。需安装System.Drawing.Common包。
下一篇
开通oss服务