C#:在 foreach 中使用 Take() is 语句可以使用吗?

标签 c# linq foreach ienumerable ienumerator

谁能建议我们应该使用以下两行代码?

foreach(var items in itemList.Take(20))
{

}

var itemList = itemList.Take(20);

foreach(var items in itemList)
{

}

以上两行在优化代码方面有什么不同吗,如果有,请告诉我原因。

最佳答案

不,这两段代码的行为不会有所不同。

事实上,如果你看看这个 SharpLab example您会注意到这两段代码编译为完全相同的 IL。

所以:

  • 代码看起来不同,如果对很重要,请选择您觉得最舒服的代码
  • 代码将编译exact相同的输出(在发布版本中),在这种情况下,代码的外观(在这种情况下)与代码的行为或性能

简而言之,选择你认为最好看的版本。

关于C#:在 foreach 中使用 Take() is 语句可以使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586167/

相关文章:

c# - 从表中获取单个值的最佳方法?

c# - 解析值后遇到意外字符 : 6. Path '[0]

c# - 使用 LINQ 在 XML 中的特定位置插入特定的 XElement

c# - 在 C# 中旋转列表的最简单方法

c# - LINQ: ...Where(x => x.Contains(以 "foo"开头的字符串 ))

java - 为什么增强的 for 循环的局部变量必须是局部变量?

javascript - foreach 没有循环遍历元素?

java - 数组、列表、集合和映射是可迭代的。还有什么?

c# - 确保 lambda 表达式指向类的实际属性?

c# - 调用 List<T>.Clear() 导致 IndexOutOfRangeException