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

C# for 迴圈外收集迴圈內賦值結果:List 收集模式

     編輯:程式設計疑難解答

問題


int a = 0;
for (int i = 0; i < 10; i++) { a = i; }
// 迴圈結束後 a = 9,無法取得 0~9 所有值

解決:宣告集合在迴圈外,迴圈內 Add


var list = new List<int>();
for (int i = 0; i < 10; i++) {
    list.Add(i); // 或 list.Add(Compute(i));
}
// list 現在包含 0,1,2,...,9

進階:LINQ 一行寫法


var list = Enumerable.Range(0, 10).ToList();
// 或
var list = Enumerable.Range(0, 10).Select(i => Compute(i)).ToList();

關鍵概念

  • 變數作用域:集合必須宣告在迴圈外層作用域,才能在迴圈後存取。
  • 值型別 vs 參考型別:List<int> 存值;若存物件請注意每次 new 避免同一引用。
  • 效能:已知筆數時 new List<T>(capacity) 避免擴容複製。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved