while(list.next() != null && list.next().asInteger() != 6)
{
...
}
这里是否可以使用内联lambda函数来避免两次调用list.next()
?如果next()
实际上从列表中删除了元素,那么这不仅仅是方便的。
答案 0 :(得分:4)
YourType foo;
while ((foo = list.next()) != null && foo.asInteger() != 6)
{
}
答案 1 :(得分:1)
在:
时,您可以使用代替而不是for (var item = list.next(); item != null && item.asInteger() !=6; item = list.next()) {
...
}
答案 2 :(得分:0)
您可以在while循环中分配变量。写它会更容易。
WhateverNextReturns nextListItem;
while ((nextListItem = list.next()) != null) && nextListItem.asInteger() != 6)
// Do some stuff
或者更好......
WhateverNextReturns nextListItem;
while(true)
{
nextListItem = list.next();
if (nextListItem == null || nextListItem == 6)
break;
//Do some stuff
}
我认为使用lambda会使它变得比它更复杂。
这是在StackOverflow Answer中有人在while表达式中分配变量的另一个例子
答案 3 :(得分:0)
可以使用内联lambda执行此操作,但C#不喜欢它:
while (((Func<YourType, bool>)(n => n != null && n.asInteger() != 6))(list.next()))
{
...
}
答案 4 :(得分:-3)
这个列表是IEnumerable对象吗?你可以随时使用
list.Where(t!=null && t=>t.asInteger()==6).ToList().ForEach(t=>{
//do anything you want with t here.
});
告诉我,如果我的问题出错了。