我的代码是:
using System;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
namespace IEnumerable
{
public class MyEnumerable<T> : IEnumerable<T>
{
public MyEnumerable(T[] items)
{
this.items = items;
}
public IEnumerator<T> GetEnumerator()
{
return new NestedEnumerator(this);
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
// The enumerator definition.
class NestedEnumerator : IEnumerator<T>
{
public NestedEnumerator(MyEnumerable<T> coll)
{
Monitor.Enter(coll.items.SyncRoot);
this.index = -1;
this.coll = coll;
}
public T Current
{
get { return current; }
}
object IEnumerator.Current
{
get { return Current; }
}
public bool MoveNext()
{
if (++index >= coll.items.Length)
{
return false;
}
else
{
current = coll.items[index];
return true;
}
}
public void Reset()
{
current = default(T);
index = 0;
}
public void Dispose()
{
try
{
current = default(T);
index = coll.items.Length;
}
finally
{
Monitor.Exit(coll.items.SyncRoot);
}
}
private MyEnumerable<T> coll;
private T current;
private int index;
}
private T[] items;
}
public class EntryPoint
{
static void Main()
{
MyEnumerable<int> integers = new MyEnumerable<int>(new int[] { 1, 2, 3, 4 });
foreach (int n in integers)
{
Console.WriteLine(n);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在实现这段代码但我得到一个错误.任何人都可以帮我解决错误免费使用此代码吗?请帮忙.我的错误是:
1 - >'IEnumerable'是'命名空间',但用作'类型'
2 - >'IEnumerable.MyEnumerable'没有实现接口成员'System.Collections.IEnumerable.GetEnumerator()'.'IEnumerable.MyEnumerable.GetEnumerator()'无法实现'System.Collections.IEnumerable.GetEnumerator()',因为它没有匹配的返回类型'System.Collections.IEnumerator'.
IEnumerable当它已经是系统中的类型时,错误很可能是您用作命名空间.
这意味着您的引用IEnumerable是引用当前命名空间而不是IEnumerable您使用(System.Collections.IEnumerable)的意思.
尝试将名称空间更改为其他名称.
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |