我有一个包装对象列表的类。我希望这个类与foreach循环兼容。让一个类兼容foreach
我看到过几个关于如何在SO上做的问题,但大多数答案都不能为我编译。
class TrackList
{
private List<Track> tracks = new List<Track>();
}
你会添加什么来使它适用于每个?
到目前为止,我有:
class TrackList : IEnumerable<Track>
{
// ...
public IEnumerator<Track> GetEnumerator()
{
return trackList.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerator.GetEnumerator()
{
return this.GetEnumerator();
}
}
但它说(翻译错误):
错误1 'HP.TrackList' 未实现接口成员 “System.Collections.IEnumerable .GetEnumerator()”。 'HP.TrackList.GetEnumerator()'无法实现 'System.Collections.IEnumerable.GetEnumerator()',因为它不具有对应于 'System.Collections.IEnumerator'的返回类型。 XXX \ TrackList.cs 11
相反,如果我使用:
IEnumerator<Track> IEnumerator<Track>.GetEnumerator()
{
return this.GetEnumerator();
}
是给我同样的错误。
为什么你需要迭代类,而不是类的属性? – krillgar
由于其他原因,我不想让轨道作为一个属性可用。您可以迭代列表而不访问该列表的属性,例如名为Items的属性。我想迭代我的曲目列表而不访问属性类(例如)曲目。 – Virus721
请改用'System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()'。 –