假设我有以下代码:
foreach(string str in someObj.GetMyStrings())
{
// do some stuff
}
维兹威兹 在循环的每次迭代中被调用? 最好改为执行以下操作:
someObj.GetMyStrings()
?
List<string> myStrings = someObj.GetMyStrings();
foreach(string str in myStrings)
{
// do some stuff
}
最新回答
- 2021-1-111 #
- 2021-1-112 #
否。该函数将被调用一次以获取IEnumerable ..然后将重复调用MoveNext和Current。
- 2021-1-113 #
GetMyStrings ()重新调整IEnumerable类型的对象.运行时知道如何处理.它先调用IEnumerable.GetEnumerator(),然后在该枚举器对象上调用MoveNext()和Current。
- 2021-1-114 #
只是为了解决问题,以防万一您陷入"所有相同"的情况。 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