当前位置:  开发笔记 > 编程语言 > 正文

Foreach中的索引

如何解决《Foreach中的索引》经验,为你挑选了2个好方法。

我目前正在使用foreach,需要项目的索引.

           foreach (DataRow m_row in base_rows)
       {
           Company nu = new Company(m_row, symb_rows[0]);
       }

这是代码.

我试图在base_rows中获取m_row的索引并使用它来传递symb_rows[index_of_m_row].这是可能的还是我应该使用正常的for循环?



1> Eric Lippert..:

"for"循环解决方案非常清晰.作为一个有趣的替代解决方案,您可以完全避开循环:

var companies = baseRows
  .Select((row, index) => new Company(row, symbRows[index]))
  .ToList();


@Andrew:因此可能是一个坏主意.我不喜欢聪明的代码.我喜欢简单,无聊,易于阅读和理解的代码,不需要任何聪明.在操作的语义更像是查询而不是转换的上下文中,此技术可能很有用; 我认为在这种特殊情况下它是矫枉过正的,for循环可能是更好的解决方案.真的,这仅用于娱乐目的.

2> Andrew Hare..:

为了知道集合中的当前索引(使用a foreach),您必须这样做:

Int32 i = 0;
foreach (DataRow m_row in base_rows)
{
    Company nu = new Company(m_row, symb_rows[i]);
    i++;
}

或使用标准for循环.的IEnumerable,因为它是一个只进过的项目的基础序列迭代器接口不公开位置索引属性.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有