迭代器(`yield return`)極大簡化遞迴資料結構遍歷。二叉樹節點:
class Node { public Node Left, Right; public T Item; }
樹類別提供 `Add(params T[])` 與 `InOrder` 屬性:
public IEnumerable InOrder => ScanInOrder(_root);
IEnumerable ScanInOrder(Node node)
{
if (node == null) yield break;
foreach (var item in ScanInOrder(node.Left)) yield return item;
yield return node.Item;
foreach (var item in ScanInOrder(node.Right)) yield return item;
}
使用:
var tree = new BinaryTree();
tree.Add(4,6,2,7,5,3,1);
foreach (int n in tree.InOrder) Trace.WriteLine(n); // 1,2,3,4,5,6,7
C# 2.0 `partial class` 允許單一類別定義分散多檔案:
// File1.cs
public partial class MyClass { public void Method1() {} }
// File2.cs
public partial class MyClass { public void Method2() {} public int Number; }
public partial class MyClass {}
public partial class MyClass : IMyInterface
{
public void Method1() {}
public void Method2() {}
}