我有这个代码:
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/