gpt4 book ai didi

operator-keyword - C# 自定义迭代器实现

转载 作者:行者123 更新时间:2023-12-03 21:24:53 24 4
gpt4 key购买 nike

我有一个类,比如 Myclass,有一个列表变量,比如字符串列表,我想从 Myclass 对象实异常(exception)部调用它,在一个循环中,简洁地像:

Myclass myclass = new Myclass();

foreach (string s in myclass)
{
}

我怀疑它在属性的 Myclass 中使用了隐式运算符关键字。语法 grrr..!有什么帮助吗?

(不确定这是否是好的做法,但有时它会派上用场)。

最佳答案

Foreach 基本上适用于序列。您的 MyClass需要实现 IEnumerable 并最终通过 GetEnumerator 返回 IEnumerator 实现。

IEnumerator 基本上提供了 MoveNext 和 Current 属性,您的 foreach 循环使用它们来一个接一个地查询序列元素。

您可以通过在 C# 中搜索迭代器来获得更多信息。添加简短的片段,以便您可以想象我的意思:

 public class MyIterator : IEnumerable<string>
{
List<string> lst = new List<string> { "hi", "hello" };
public IEnumerator<string> GetEnumerator()
{
foreach(var item in lst)
{
yield return item;
}
}

IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}

public class Consumer
{
public void SomeMethod()
{
foreach(var item in new MyIterator())
{

}
}
}

希望这可以帮助..

关于operator-keyword - C# 自定义迭代器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com