C# int如何映射到IEnumerator<;int>;在实现IEnumerator接口时?
为了学习,我正在编写一些示例程序,我对IEnumerable的GetEnumerator方法有一个问题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++)
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