C# 如何实现接口IEnumerable的方法<>;?
如果我有此代码:C# 如何实现接口IEnumerable的方法<>;?,c#,C#,如果我有此代码: public class Pilota < T > { public T Current { get; set; } private T NamePilota { get; set; } private T SurNamePilota { get; set; } public List < T > pilota; public Pilota(int NumberPilota)
public class Pilota < T > {
public T Current {
get;
set;
}
private T NamePilota {
get;
set;
}
private T SurNamePilota {
get;
set;
}
public List < T > pilota;
public Pilota(int NumberPilota) {
pilota = (new T[NumberPilota]).ToList();
}
public void Add(T name) {
pilota.Add(name);
}
}
公共类Pilota{
公共电流{
得到;
设置
}
二等兵{
得到;
设置
}
二等兵{
得到;
设置
}
公共列表pilota;
公共Pilota(国际号码Pilota){
pilota=(新的T[NumberPilota]).ToList();
}
公共无效添加(T名称){
添加(名称);
}
}
如何实现接口的方法?我需要,因为我想使用Foreach循环
我应该创建MoveNext、Reset和Current,对吗?但是我该怎么做呢?这扩展了“IEnumerable”接口,并使用yield
关键字覆盖了“GetEnumerator”方法:
public IEnumerable<T> GetEnumerator() {
foreach (T elem in pilota) yield return elem;
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
public IEnumerable GetEnumerator(){
foreach(pilota中的T元素)收益返回元素;
}
IEnumerator IEnumerable.GetEnumerator(){
返回GetEnumerator();
}
查看了吗?只需返回列表的枚举器即可IEnumerable
需要实现GetEnumerator
,并且该方法返回的IEnumerator
将需要实现MoveNext
,Reset
等。您的代码似乎将单个导频的概念与导频列表的概念混淆了。为什么不直接使用List
而不是将列表粘贴到Pilota
类中呢?而且,在大多数情况下,您可能会发现从List
继承比自己实现所有IEnumerable
更容易。但是如果你真的需要包装一个列表而不是从中继承,你至少应该将包装的列表设置为私有或受保护。谢谢,但我不明白这行代码会是什么:IEnumerator IEnumerable.GetEnumerator(){return GetEnumerator();}
。NET 1.0不支持泛型。迭代器的这个非通用版本用于提供向后兼容性。