泛型鏈表範例:
class Node { public K Key; public T Item; public Node NextNode; }
public class LinkedList : IEnumerable
{
Node _head;
public IEnumerator GetEnumerator()
{
var cur = _head;
while (cur != null)
{
yield return cur.Item;
cur = cur.NextNode;
}
}
}
// 使用
var list = new LinkedList();
foreach (string s in list) Trace.WriteLine(s);
編譯器從 `IEnumerable
public IEnumerator GetEnumerator()
{
for (int i = 1; i < 5; i++)
{
yield return i;
if (i > 2) yield break; // 僅產生 1,2,3
}
}
以屬性暴露:
public class CityCollection
{
string[] _cities = {"New York","Paris","London"};
public IEnumerable Reverse
{
get
{
for (int i = _cities.Length-1; i >= 0; i--)
yield return _cities[i];
}
}
}
// 使用
foreach (string c in new CityCollection().Reverse) Trace.WriteLine(c);
違反限制導致編譯錯誤。