我在方法中有一个部分也做了类似的事情:
do
{
// some query
// another query
if another query != null
{
// return something
}
}while(some query != null)
显然这不起作用,因为在循环内部之前不会声明某些查询。我试过的一个解决方案是
bool flag = false;
do
{
// some query
if some query == null
{
flag = true;
// or
break;
}
// another query
if another query != null
{
// return something
}
}while(flag != true)
这两种方法都没有让我真正满意,老实说,我不确定它们是否会被认为是良好的编码习惯,这让我很烦恼。此外,直到这一点,我已经在这样的情况下解决了这个问题,但是由于标志的垃圾特性,我想知道是否有更好的方法来处理这个以供将来参考,而不是制作垃圾变量。我应该注意到我想到的其他解决方案可能会更加丑陋。该解决方案是在循环外部运行查询,并将其转换为while循环并在其自身内部再次调用查询,而不是do循环。
虽然代码与上述解决方案一起工作,但我想知道是否有人有更好的解决方案,不需要一个可以说是无意义的变量。
虽然我明白这样一个更好的解决方案可能是不可能的,或者甚至是非常需要的,但即使尝试也可能是荒谬的。
答案 0 :(得分:1)
拥有break
或flag
变量并不会导致效率低下,这就是你应该关注的循环内部。换句话说,这只是一种偏好,也可以。
答案 1 :(得分:1)
我认为你需要
while(true)
{
// some query
if some query == null
{
break;
}
// another query
if another query != null
{
// return something
}}
答案 2 :(得分:1)
你可以试试这个:
do
{
// some query
if some query == null
{
break;
}
// another query
if another query != null
{
// return something
}
}while(true);