代码之家  ›  专栏  ›  技术社区  ›  John M

更新上一个列表<>元素

  •  -1
  • John M  · 技术社区  · 9 年前

    使用foreach循环,我可以更新列表的“current”元素。我正在尝试使用int值更新前一个元素,但这不起作用。如何正确访问上一个项目?

    var myList = listPrelim.ToList(); 
    
    int i = 0;
    MyCustomClass previous = new MyCustomClass();
    
    foreach (MyCustomClass current in myList)
    {                
        current.IGNORE = true;  // works
        previous.IGNORE = false; // works
        previous = current;
        i++;
    }
    

    更新1:

    accessing the previous.property works.
    
    3 回复  |  直到 9 年前
        1
  •  1
  •   Jcl    9 年前

    这应该做到:

    var myList = listPrelim.ToList();    
    MyCustomClass previous = null;
    
    foreach (MyCustomClass current in myList)
    {                
      current.IGNORE = true; 
      if(previous != null) 
        previous.IGNORE = false;
      previous = current;
    }
    

    这段代码的结果有点荒谬,因为您只是在设置所有元素 IGNORE false 除了最后一个,但我只是假设它是一些示例代码。

        2
  •  0
  •   CybeX    9 年前

    我建议在每个“foreach循环”的末尾将当前分配给前一个

    所以用int表示,它看起来是这样的:( p、 请原谅伪代码 )

    int prev = 0
    foreach (int cur in [1,10])
    {
      //do something
      //more code
      //at the end
      prev = cur
    }
    

    因此,在每个循环的开始,prev将保持前一个int,直到它被重新分配。

    希望这有帮助:p

        3
  •  0
  •   M. Jason    9 年前

    尝试 对于 循环(myList[i]、myList[i-1]是指针)。

            var myList = listPrelim.ToList();
    
            for (int i = 0; i < myList.Count; i++)
            {
                myList[i].IGNORE = true;
                if (i-1>=0)
                    myList[i - 1].IGNORE = false;
    
            }