c# - 这两个片段严格等效吗?

标签 c# foreach

我有这个代码:

foreach (object obj in _Destinations)
{
    obj = _ItemsSource;
}

哪个产生了错误

Cannot assign to 'obj' because it is a 'foreach iteration variable'

所以我用以下代码“圈出了”问题:

for (int i = 0; i < _Destinations.Count; i++)
{
    _Destinations[i] = _ItemsSource;
}

这适用于我的实际情况,但我不确定这对于任何类型的对象都是完全相同的。是这样吗?

编辑:_目的地是 List<object>

最佳答案

这绝对是完全相同的事情:对于初学者来说,第二个有效,而第一个则无效:)

第一个代码片段不起作用的原因是它使用 _Distance 中的迭代器。列表,并且无法通过 IEnumerable<T> 分配给原始集合的迭代器。第二个片段使用 [index]访问底层列表或数组。该结构允许读取和写入;这就是它起作用的原因。

就以相同顺序访问列表或数组的所有元素而言,两种结构是相同的。

关于c# - 这两个片段严格等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604284/

相关文章:

c# - 将 URL 添加到 .NET XML 注释

arrays - SwiftUI 中的同一个 ForEach 中是否可以有 2 个数组?

使用 MySQL 搜索的 PHP 代码在 IE 中会中断,但在 Chrome 中可以正常工作

R foreach 和打印行为

c# - 如何计算我的代码的内存使用量以找出 C# 的最佳方式?

c# - 如何在 WPF 中的窗口之间导航?

c# - 在 C# 窗体中使用 XNA 内容管道

c# - C#中异常层次结构的良好实践

c# - Foreach 循环 - 以不同方式显示项目,前 3 项,项目 4-6 等

php - 为什么 current() 会跳过 foreach() 语句中的第一个数组元素?