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(大小写很重要)。哈,甚至没有查看该函数。很好……总是最愚蠢的错误。