小编Ida*_*ana的帖子

GetIterator() 和迭代器模式

我正在尝试实现迭代器模式。基本上,据我所知,它使类成为“foreachble”,并通过不向用户透露确切的集合类型来使代码更安全。

我一直在试验,我发现如果我在我的类中实现 IEnumerator GetEnumerator(),我得到了想要的结果......似乎可以省去搞乱实现接口的麻烦。

这是我的意思的一瞥:

public class ListUserLoggedIn
{
    /*
        stuff
    */
    
    public List<UserLoggedIn> UserList { get; set; }

    public IEnumerator<UserLoggedIn> GetEnumerator()
    {
        foreach (UserLoggedIn user in this.UserList)
        {
            yield return user;
        }
    }

    public void traverse()
    {
        foreach (var item in ListUserLoggedIn.Instance)
        {
            Console.Write(item.Id);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我的问题是,这是迭代器的有效示例吗?如果是,为什么这是有效的,我该怎么做才能使迭代器通过“var”仅返回一部分或匿名对象。如果不是,正确的方法是什么...

c# ienumerable ienumerator iterator

2
推荐指数
1
解决办法
1937
查看次数

标签 统计

c# ×1

ienumerable ×1

ienumerator ×1

iterator ×1