假设我收集了一些可以使用TheCollection.GetByID(long)
访问的内容,但是我无法提前获取该内容的长度。我想设置一个while循环来遍历每一个。
var iter = 0; var thing = TheCollection.GetByID(iter);
while (thing != null) {
dealWithTheThing(thing);
iter++;
thing = TheCollection.GetByID(iter);
}
但我更喜欢通过在构造函数中添加修改来整理它,并且能够得到这样的结果:
var iter = 0; var thing;
while ((thing = TheCollection.GetByID(iter++)) != null) {
dealWithTheThing(thing);
}
这可能是类似的吗?
答案 0 :(得分:4)
是的,你的例子很好。你可以在一个条件下进行任务,风格非常清晰(至少对我而言)。
答案 1 :(得分:1)
虽然在循环条件中使用赋值运算符看起来很漂亮,但它可能会引起其他人的混淆,因为很容易将==
拼错为=
(read more: search for "Assignment Expressions")< / p>
在给你警告后,我发现以下内容更具可读性:
var iter = 0; var thing;
while (thing = TheCollection.GetByID(iter++) && thing != null) {
dealWithTheThing(thing);
}
击> <击> 撞击>