假設我有以下代碼:
foreach(string str in someObj.GetMyStrings())
{
// do some stuff
}
維兹威兹 在迴圈的每次迭代中被呼叫? 最好改為執行以下操作:
someObj.GetMyStrings()
?
List<string> myStrings = someObj.GetMyStrings();
foreach(string str in myStrings)
{
// do some stuff
}
最新回復
- 5月前1 #
- 5月前2 #
否。该函式將被呼叫一次以获取IEnumerable ..然後將重複呼叫MoveNext和Current。
- 5月前3 #
GetMyStrings ()重新調整IEnumerable型別的物件.執行時知道如何處理.它先呼叫IEnumerable.GetEnumerator(),然後在该列舉器物件上呼叫MoveNext()和Current。
- 5月前4 #
只是為了解決問题,以防万一您陷入"所有相同"的情况。 for(int x = 0; x
相似問題
- c#:获取windows 8自動颜色主题的活動颜色c#netwpfwinapiwindows82021-01-12 01:28
- c#:从DnsGetHostEntry()获取IPv4地址c#netdnsipv6ipv42021-01-12 00:26
- c#:NET中的鎖(监控)內部實現c#netmultithreadingsynchronizationmonitor2021-01-11 23:24
- c#:活動視窗上的windows系統事件是否已更改?c#netwindowswinapihook2021-01-11 23:25
- c#:DataGrid获取選定行的列值c#netwpfdatagrid2021-01-11 22:25
该函式仅呼叫一次,以返迴
IEnumerator<T>
; 在那之後,MoveNext()
方法和Current
屬性用於遍歷結果:等效於:
請註意,迭代器放置在末尾-這對於从迭代器塊分配資源尤其重要,例如:
在上面的代碼中,您確實希望在完成迭代後關闭檔案,並且編譯器實現了
IDisposable