使用 yield return 返回 0 到 100 之間的完全平方數:0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100。
public static IEnumerable<int> PerfectSquares() {
for (int i = 0; i * i <= 100; i++) {
yield return i * i;
}
}
// 使用
foreach (var n in PerfectSquares()) {
Console.WriteLine(n);
}
// 輸出: 0 1 4 9 16 25 36 49 64 81 100
yield return 使方法成為**迭代器**,編譯器生成實現 IEnumerable<T> 的狀態機類。foreach 時,**惰性執行**:每次 MoveNext() 運行到下一個 yield return,產生一個值。public static IEnumerable<int> InfiniteSquares() {
for (int i = 0; ; i++) // 無限循環
yield return i * i;
}
// 取前 10 個
var first10 = InfiniteSquares().Take(10).ToList();
yield return 是 C# 實現**惰性序列**的核心語法。完全平方數題目完美展示其「按需計算、狀態保持」特性。面試時能手寫此迭代器,說明掌握 C# 迭代器模式本質。