C# int如何映射到IEnumerator<;int>;在实现IEnumerator接口时?

C# int如何映射到IEnumerator<;int>;在实现IEnumerator接口时?,c#,C#,为了学习,我正在编写一些示例程序,我对IEnumerable的GetEnumerator方法有一个问题 public IEnumerator<int> GetEnumerator() { //return new IterationSampleIterator(this); //C#1.0 getenumerator for (int i = 0; i < values.Length; i++)

为了学习,我正在编写一些示例程序,我对IEnumerable的GetEnumerator方法有一个问题

public IEnumerator<int> GetEnumerator()
        {
            //return new IterationSampleIterator(this); //C#1.0 getenumerator
            for (int i = 0; i < values.Length; i++)
            {
                yield return (int)values[i];
            }
            //yield return 1;
        }
public IEnumerator GetEnumerator()
{
//返回新的IterationSampleIterator(this);/C#1.0 getenumerator
for(int i=0;i
在这种情况下,int如何 被投入 IEnumerator

int是如何被转换到IEnumerator的

整数永远不会转换为IEnumerator。注意
yield
关键字的使用

从msdn:

在语句中使用yield关键字时,表示 方法、运算符或get访问器,它在其中显示为迭代器

使用yield-return语句一次返回一个元素


此处的更多信息:

您的int并没有真正转换为int。您在此处显示的方法应该返回一组int。没有一个整数

通过使用
yield
可以确保方法的返回类型是
IEnumerable
(即多个int的集合)

但当您在方法签名中写入时,它会隐式转换为IEnumerable