簡體   English   中英

在C#foreach循環中檢索到多少次對象列表?

[英]How many times is the list of objects retrieved in a C# foreach loop?

我通常嘗試在運行foreach循環之前將數組/集合存儲為局部變量:與在foreach內部調用Get函數相反。 這是因為我假設它必須在循環的每次迭代中獲取該數組,而我寧願它只需要一次獲取該數組/集合。 我在尋找文檔來支持我的理論時遇到了麻煩,所以我想問問大師。

//Assume that FindStringsContaining() is a CPU
//intensive operation. Does it run only once?
foreach(string data in FindStringsContaining("Data"))
{
    //use the data
}

它將始終只運行一次

Foreach在IEnumerable上運行,並且僅對集合進行迭代; 為找到的每個項目在循環內執行代碼。

請注意,明確不允許在枚舉過程中修改集合(這可能需要重新枚舉)(將拋出InvalidOperationException )。

該方法調用只會發生一次。 然后,它返回一個IEnumerable<string> ,它以流方式進行迭代(在項保留在集合中或未命中中斷時調用MoveNext方法)。

它被稱為一次。 驗證此問題的一種快速方法是將一個斷點放置在FindStringsContaining()方法內,您可以看到它僅被命中一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM