某些类的某些属性,由于实现了IQueryable或IEnumerable, 能够更方便、更优美地使用foreach查询。 但是在一些特殊情况下,foreach不一定能够查询到准确的值,例如以下情况:
建造一个HtmlTable (runat=server),至少有一行数据,内容任意,然后再建造一个添加行数据的方法,在每次添加完数据之后,立即使用 foreach(var i in obj.Rows) 查询,这时候就会出现“集合已经更改”的错误。
如果我们换成for(var i = 0; i< obj.Rows.Count;i++),就可以避免错误发生了。 因为for是实时查询,而foreach是调用IQueryable或IEnumerable中的yield return 的后期查询,在实现机制上有所不同。
当然for需要编写更多的代码,在外观上也没有foreach的可读性高,这时候也需要我们根据具体情况具体使用。
阅读(259) | 评论(0) | 转发(0) |