众所周知,不能将foreach循环中的集合修改为InvalidOperationException
。但是foreach循环如何签出任何更改?我的意思是,如果我有密码:
foreach(var item in List<int> list) {
list.Add(5);
list.Remove(5);
}
…它仍然会抛出异常。IEnumerator接口中没有集合的任何版本控制。这是怎么回事?我之所以要求这样做,是因为在java中,您可以在循环期间轻松地修改集合,这是我自己的HashCollection实现中的问题,我不知道如何检查任何集合更改。
好的,我找到答案了
public class List<T> {
...
public struct Enumerator : IEnumerator<T>, System.Collections.IEnumerator
{
private List<T> list;
private int index;
private int version; // there it is
private T current;
internal Enumerator(List<T> list) {
this.list = list;
index = 0;
version = list._version;
current = default(T);
}
...
里面的内部结构列出了我不能用java做的事情。也许我应该声明open Version
属性,并在枚举器内部传递集合。
我首先想到的是,一个property_a不能绑定到另一个property_b,这个property_b绑定到property_a或者依赖于属性,这些属性绑定到property_a。对吧?
我是scala新手,想知道如何在scala中的特定索引处启动foreach循环?我的代码目前看起来像这样: 这里的“列表”包含字符串列表[“一”、“二”、“三”、“四”、“五”]。而不是从列表的开始,我希望我的每一个循环从索引i开始操作,忽略所有的VAUES在前面(即只考虑值“四”和“五”)。 谁能帮帮我吗?提前谢谢
问题内容: 在过去的几周里,我一直在与Facebook框架React.js和Backbone一起工作,但是我仍然不确定是否有什么最合适的方法来重新渲染React组件。已作为道具传递。 目前我要做的是在集合上设置侦听器,并在触发时设置状态: 我已经看到了将模型克隆到状态的示例: 我也看到了变体,其中props中的模型/集合直接在渲染中使用,而不是使用状态,然后在集合/模型发生更改时调用forceUp
下面是我的父组件,它包含一个循环的多个输入。如何选择一个来聚焦?在这种情况下,我必须创建动态吗?
我正在迭代Java 7循环和Java 8 循环中的列表。Java 8 循环希望其中的变量不会更改。例如: 有人能解释一下为什么吗?是Java 8的弊端吗?