我有一個包裝對象列表的類。我希望這個類與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()'。 –