Tom*_*Tom 4 keyword operator-keyword c#-2.0
我有一个类,比如 Myclass,有一个列表变量,比如字符串列表,我想从 Myclass 对象实例外部调用它,在一个循环中,简洁地像:
Myclass myclass = new Myclass();
foreach (string s in myclass)
{
}
Run Code Online (Sandbox Code Playgroud)
我怀疑它在属性的 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())
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助..