C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

您所在的位置:网站首页 数组中的各个元素的值不可以改变 C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

2024-07-13 01:01| 来源: 网络整理| 查看: 265

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译。

foreach (int x in myArray) { x++; //错误代码,因为改变了元素的值 Console.WriteLine(x); }

如果要让自定义的数据类型支持foreach循环,则该类型必须实现IEnumerable接口,且存在对应此列表的IEnumerator实现。 实际上,在.Net的底层(IL语言层面)而言,

foreach (var x in list) // x的类型为T { ... }

等价于如下代码:

using (var iterator = list.GetEnumerator()) // iterator的类型为IEnumerator { while ( iterator.MoveNext() ) { var x = iterator.Current(); ... // 本段代码中禁止修改x的值——编译器会报错 } }

它只是为了让用户更加易于使用的等价描述形式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3