c# – 如何定义迭代器接口类型?
发布时间:2020-12-15 08:07:45 所属栏目:百科 来源:网络整理
导读:我写了一个实现IEnumerable T的类.我有一个返回MyClass的方法.如果我尝试从该方法中产生返回,编译器会告诉我“…不能是迭代器块,因为…不是迭代器接口类型”. 那么,我该如何定义自己的接口迭代器类型呢?它是否必须是“抽象的”(不能定义任何方法)? 我想要
我写了一个实现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>的构造函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |