【C#】foreach迭代变量只读的原因
来源:互联网 发布:淘宝上买徕卡 编辑:程序博客网 时间:2024/05/17 06:47
先看下面两个接口:
namespace System.Collections{ // 摘要: // 支持对非泛型集合的简单迭代。 [ComVisible(true)] [Guid("496B0ABF-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerator { // 摘要: // 获取集合中的当前元素。 // // 返回结果: // 集合中的当前元素。 // // 异常: // System.InvalidOperationException: // 枚举数定位在该集合的第一个元素之前或最后一个元素之后。 object Current { get; } bool MoveNext(); void Reset(); }}namespace System.Collections{ // 摘要: // 公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 [ComVisible(true)] [Guid("496B0ABE-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerable { // 摘要: // 返回一个循环访问集合的枚举数。 // // 返回结果: // 可用于循环访问集合的 System.Collections.IEnumerator 对象。 [DispId(-4)] IEnumerator GetEnumerator(); }}
每个实现的迭代器,返回类型必须为 IEnumerable、IEnumerator、IEnumerable<T> 或 IEnumerator<T>。foreach中的迭代变量是即为IEnumerable、IEnumerator、IEnumerable<T> 或 IEnumerator<T>类型。从上面的接口可以看出,object Current是只读的,因此,foreach迭代变量只能是只读的。
另:
foreach中的迭代变量本来就是只读,不可修改的。
对值类型中的属性赋值,会改变值类型对象在栈上的内存分步,所以实际上就是对值类型对象本身重新赋值了
- 【C#】foreach迭代变量只读的原因
- foreach迭代变量只读
- c:foreach迭代map
- foreach的只读性
- <c:forEach>迭代相加计算
- <c:foreach/>迭代标签详解
- 迭代输出标签<c:forEach>
- Java迭代foreach原理解析(java.util.ConcurrentModificationException的原因)
- foreach迭代语句
- forEach 迭代计数
- 迭代foreach
- 使用<c:forEach>标签迭代JavaBean的属性时报错
- c:foreach 迭代一行显示2条数据
- C语言中const只读变量及常量的注意事项
- 用JSTL的forEach标签迭代Map对象
- const 修饰的只读变量
- c语言中的只读变量const
- C# 自定义类型实现foreach 迭代
- iOS samplecode
- OwnCloud:开源的个人云服务器
- JVM基础概念总结:数据类型、堆与栈
- c#消息队列,事件处理(java)
- 宋鸿兵:美国向中国扔出两烂苹果 中国该反击了
- 【C#】foreach迭代变量只读的原因
- JSON for java入门总结
- 不再迷惘,执着于我的方向
- 我自己重写 Ext.form.TwinTriggerField ,文本框点击后面按钮,弹出 Window 页面,选择值
- HTML5手机游戏将迎美好未来
- 通共类注意事项
- android apk安装原理分析
- oracle: OCA-047-题解与实验(8)--CUBE和ROLLUP的用法
- WebLogic JMS的强大功能组合:UOW+SAF+分布式Queue