c# – 如何定义迭代器接口类型?

前端之家收集整理的这篇文章主要介绍了c# – 如何定义迭代器接口类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个实现IEnumerable< T>的类.我有一个返回MyClass的方法.如果我尝试从该方法中产生返回,编译器会告诉我“…不能是迭代器块,因为…不是迭代器接口类型”.

那么,我该如何定义自己的接口迭代器类型呢?它是否必须是“抽象的”(不能定义任何方法)?

我想要做的是编写一堆可链接方法,因此每个方法都应该返回一个MyClass实例.但我需要MyClass成为一种可枚举的东西.我没有使用某种基础数据类型,而是希望我能在任何地方获得回报.

@Oded:

class SharpQuery : IEnumerable<HtmlNode>
{
    public SharpQuery Find(string selector)
    {
        foreach (var n in this)
        {
            // filter the results
            yield return node;
        }
    }
}

解决方法

不,那是不可能的.为什么要考虑你有一个实现IEnumerable< Animal>的类动物园?但也有很多其他成员. Zoois是IEnumerable< Animal>但不一定相反 – 一系列动物只是一系列动物.没有动物园饲养员,没有商店,没有入场费或任何使动物园成为动物园的东西.

当你使用yield return x时,返回类型不能是Zoo,因为你没有动物园 – 你只有一系列动物.

你可以做的是将它称为新的Zoo(foo()),其中foo返回IEnumerable< Animal>并向Zoo添加一个接受IEnumerable< Animal>的构造函数.

原文链接:https://www.f2er.com/csharp/100816.html

猜你在找的C#相关文章