使用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.
答案 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;
}