首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现两个具有不同类型参数的泛型IEnumerable接口

实现两个具有不同类型参数的泛型IEnumerable接口
EN

Stack Overflow用户
提问于 2014-08-20 10:06:38
回答 2查看 806关注 0票数 1

具有如下代码,得到一个编译错误- "...没有实现接口成员'System.Collections.IEnumerable.GetEnumerator()'".

如何实现GetEnumerator的非泛型版本?

代码语言:javascript
复制
public class Giraffe { }
public class Pigeon { }
public class Sample : IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
    IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
    {
        return null;
    }
    IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
    {
        return null;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-08-20 10:10:14

尝试:

代码语言:javascript
复制
public class Pets :IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>
        {
            IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
            {
                return null;
            }
            IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
            {
                return null;
            }

            public IEnumerator GetEnumerator()
            {
                throw new NotImplementedException();
            }
        }
票数 1
EN

Stack Overflow用户

发布于 2014-08-20 11:11:05

如果我正确理解了您的问题,下面是一个如何在类中实现非泛型枚举器的示例

代码语言:javascript
复制
public class Sample : IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
    IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
    {
        return null;
    }
    IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
    {
        return null;
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return null; //your logic for the enumerator
    }
}

由于通用IEnumerable<T>继承了非通用IEnumerable,因此实现IEnumerable.GetEnumerator将为其定义一个实现。

为了更清楚起见,您还可以将类声明为public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>

示例

代码语言:javascript
复制
public class Sample : IEnumerable, IEnumerable<Giraffe>, IEnumerable<Pigeon>
{
    IEnumerator<Giraffe> IEnumerable<Giraffe>.GetEnumerator()
    {
        return null;
    }
    IEnumerator<Pigeon> IEnumerable<Pigeon>.GetEnumerator()
    {
        return null;
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return null; //your logic for the enumerator
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25395691

复制
相关文章

相似问题

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