【发布时间】:2021-10-19 17:40:09
【问题描述】:
Visual Studio 在IEnumerable 上向我发出警告“警告:可能存在多个枚举”。然后我添加ToList() 到它。但我开始怀疑为什么这是一种不好的做法。
那么为什么多次列举不好呢?
【问题讨论】:
-
有些序列不能被枚举多次,或者在多次枚举时会给你不同的结果。
-
只是为了添加到@MatthewWatson,您可能从数据库或网络服务或其他一些相对“慢”的共享资源中提取了一个序列。多次枚举意味着多次访问资源,这将减慢您的程序,或减慢共享资源,或两者兼而有之。
-
@cly 可忽略
-
@ErmiyaEskandary 对 10m 项的快速经验测试表明您是正确的,尽管 ToList 的时间值几乎是 ToArray 的两倍,但结果仍然在 10 毫秒的范围内,因此可以忽略不计。这里有关于这个主题的主题,比如这个旧主题:stackoverflow.com/questions/454916/… 有人感兴趣。
标签: c# enumeration