就是像开头测试的例子稍有改动移除后不用break跳出
List<string> myString = new List<string>();
myStringAdd(ab);
myStringAdd(cd);
foreach (string s in myString)
{
myStringRemove(s);
}
编译通过了但运行时抛出异常InvalidOperationException集合已修改可能无法执行枚举操作
通过上面三个测试例子和开头的实际例子我貌似看到了foreach的某种东西
第一不能修改的是foreach引用变量因为它是引用的对它的修改没有意义也没有作用它就像一个c/c++指针那样对集合中的元素进行指向引用我们能通过引用看到它但是没有能力动它
第二in之前的变量是引用变量但in之后的集合确是实实在在的所以可以对它操作像ADD();REMOVE()等方法可以使用
第三foreach引用变量大概是通过地址指向后面的集合(我猜想跟c/c++的指针很像)当修改了集合的元素时地址可能发生某种改变所以不跳出循环继续遍历时就可能出现引用找不到的情况 [next] 最后也许说的不精准但这就是我理解的全部了首先表扬下自己这样的思路和精神至于技术深度大概没什么呵呵再接再厉
[] []