首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# yield return 實現 [0,100] 完全平方數序列:迭代器模式

     編輯:程式設計綜合問答

需求

使用 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# 迭代器模式本質。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved