我正在尝试实现迭代器模式。基本上,据我所知,它使类成为“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”仅返回一部分或匿名对象。如果不是,正确的方法是什么...