更新上一个列表<>元件

时间:2016-01-18 19:55:57

标签: c# list

使用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++;
}

UPDATE1:

accessing the previous.property works.

3 个答案:

答案 0 :(得分:1)

这应该做:

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除了最后一个,但我只是假设它是一些示例代码。” / p>

答案 1 :(得分:0)

我建议在每个" foreach循环结束时将当前分配给前一个"

所以在int术语中它看起来像这样:( p.s。请原谅伪代码

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

所以在每个循环的开头,prev将保留前一个int,直到它被重新分配。

希望这会有所帮助:p

答案 2 :(得分:0)

尝试 for 循环(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;

        }