gpt4 book ai didi

C# 泛型 IEnumerable

转载 作者:行者123 更新时间:2023-11-30 19:35:36 27 4
gpt4 key购买 nike

我正在深入了解迭代器模式,因此最终我可以在某些类(class)中使用它。这是一个测试类:

public class MyGenericCollection : IEnumerable<int>
{
private int[] _data = { 1, 2, 3 };

public IEnumerator<int> GetEnumerator()
{
foreach (int i in _data)
{
yield return i;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}

我对 IEnumerable.GetEnumerator() 感到困惑部分。在我运行的代码测试中,它从未被引用或使用过,但我必须用它来实现通用 IEnumerable .

我明白 IEnumerable<T>继承自 IEnumerator ,所以我必须同时实现这两者。

除此之外,当使用非通用接口(interface)时,我感到很困惑。在调试中它从未进入。谁能帮我理解一下?

最佳答案

I'm confused on the IEnumerable.GetEnumerator() section. In the code tests that I've ran, it's never referenced or used, but I have to have it to implement the generic IEnumerable.

任何将您的类型用作 IEnumerable 的东西都会使用它。例如:

IEnumerable collection = new MyGenericCollection();
// This will call the GetEnumerator method in the non-generic interface
foreach (object value in collection)
{
Console.WriteLine(value);
}

也只有几个 LINQ 方法会调用它:CastOfType:

var castCollection = new MyGenericCollection().OfType<int>();

关于C# 泛型 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535761/

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