Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实现IEnumerable<;T>;_C#_Ienumerable - Fatal编程技术网

C# 实现IEnumerable<;T>;

C# 实现IEnumerable<;T>;,c#,ienumerable,C#,Ienumerable,我有一个密码: public sealed class Sequence : IEnumerable<MyClass> { List<MyClass> _elements; public IEnumerator<MyClass> Getenumerator() { foreach (var item in _elements) {

我有一个密码:

    public sealed class Sequence : IEnumerable<MyClass>
    {
        List<MyClass> _elements;

        public IEnumerator<MyClass> Getenumerator()
        {
            foreach (var item in _elements)
            {
                yield return item;
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this._elements.GetEnumerator();
        }
    }


// ....

Sequence s = new Sequence();

// ...
// filling s with some data
// ...

foreach(MyClass c in s)
{
   // some action
}
公共密封类序列:IEnumerable
{
列表元素;
公共IEnumerator Getenumerator()
{
foreach(变量项在_元素中)
{
收益回报项目;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
返回此参数。_elements.GetEnumerator();
}
}
// ....
序列s=新序列();
// ...
//用一些数据填充
// ...
foreach(我的c类在s中)
{
//一些行动
}
那段代码不想编译。它不想编译。使用泛型类型“System.Collections.generic.IEnumerator”需要“1”类型参数

帮助我重写MyClass以支持枚举

我尝试了几种组合,用谷歌。无泛型的Enumerable和IEnumerator示例。

添加行:

using System.Collections;

您想要使用
System.Collections.IEnumerator
,而不是
System.Collections.Generic.IEnumerator

听起来您只是缺少了使用
指令的
,因为
IEnumerator
(非泛型品种)存在于
System.Collections
,而不是
System.Collections.Generic
(默认情况下,它包含在每个源文件的顶部)

因此,只需定义:

using System.Collections;

ando你可以走了。

为什么要让自己复杂化?为什么不在不定义Sequence类的情况下使用IEnumerable或List呢?顺便说一句,Sequence类的速度非常慢。它更灵活。因为它只是类定义的一部分。它里面有一些方法和属性。我添加了这一行:…ConsoleApplication1.Sequence'没有实现t接口成员“System.Collections.Generic.IEnumerable.GetEnumerator()”@nik:GetEnumerator方法应称为GetEnumerator.C#区分大小写。否,不好。ConsoleApplication1.Sequence“未实现接口成员”System.Collections.Generic.IEnumerable.GetEnumerator()“不知道你做错了什么,但是为什么不直接使用VS智能标记来自动实现接口呢?保证到时候会做对的。@Noldorin,我想实现泛型-->IEnumerable,但似乎没有示例。我能找到的所有东西都是关于IEnumerable的。你能给我一些关于IEnumerable和内部Collection的例子吗?”n例如List _elements;代码中有一个输入错误:它的GetEnumerator不是GetEnumerator(大小写很重要)。哈,甚至没有查看该函数。很好……总是最愚蠢的错误。