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不支持泛型。迭代器的这个非通用版本用于提供向后兼容性。