首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现IEnumerator<T>?

如何实现IEnumerator<T>?
EN

Stack Overflow用户
提问于 2013-08-07 13:24:44
回答 3查看 7.1K关注 0票数 2

这段代码没有编译,它抛出了以下错误:

类型“TestesInterfaces.MyCollection”已经包含了“当前”的定义

但是当我删除这个不明确的方法时,它会继续给出其他错误。

有人能帮忙吗?

代码语言:javascript
复制
public class MyCollection<T> : IEnumerator<T>
{
    private T[] vector = new T[1000];
    private int actualIndex;

    public void Add(T elemento)
    {
        this.vector[vector.Length] = elemento;
    }

    public bool MoveNext()
    {
        actualIndex++;
        return (vector.Length > actualIndex);
    }

    public void Reset()
    {
        actualIndex = -1;
    }

    void IDisposable.Dispose() { }

    public Object Current
    {
        get
        {
            return Current;
        }
    }


    public T Current
    {
        get
        {
            try
            {
                T element = vector[actualIndex];
                return element;
            }
            catch (IndexOutOfRangeException e)
            {
                throw new InvalidOperationException(e.Message);
            }
        }
    }
}
EN

Stack Overflow用户

发布于 2013-08-07 13:25:52

您需要定义当前正在实现的接口。

代码语言:javascript
复制
Object IEnumerator.Current
{
    //
}

public T Current
{
    //
}

这样,类就有2个Current属性。但你可以同时访问它们。

代码语言:javascript
复制
MyCollection<string> col = new MyCollection<string>();
var ienumeratort = col.Current; //Uses IEnumerator<T>
var ienumerator = (IEnumerator)col.Current; //uses IEnumerator
票数 9
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18104624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档