虽然声明未知

时间:2011-08-23 11:05:15

标签: c# .net

我看到一些人的代码是这样的:

while (!(baseType == typeof(Object)))
{
    ....
    baseType = baseType.BaseType;
    if (baseType != null)
        continue;
    break;
} while (baseType != typeof(Object));

什么是while(...) {...} while(...)声明?
是以下等效代码?

while (baseType != null && baseType != typeof(Object))
{
    ....
    baseType = baseType.BaseType;
}

2 个答案:

答案 0 :(得分:7)

没有while() ... while();语句,所以它实际上是两个语句,如:

如果它们具有相同的条件,就像在你的例子中那样,第二个就没用了。

编辑:

实际上,做一些测试后我才意识到它实际上是两个循环,例如:

while(...) { ... }
while(...);

答案 1 :(得分:4)

你连续有两个while语句。第二个可能最终成为无限循环,因为第一个运行直到第一个条件为真或baseType变为空。 然后第二个循环开始:

while (baseType != typeof(Object));

如果另一个线程未更改baseType,则循环不会终止。因为第一个循环检查相同的条件,所以第二个循环永远不会运行,除非baseType为null。

您的代码并不完全相同,因为如果baseType为null,则第一个代码会中断循环,然后在无限循环中结束。我更喜欢你的代码,它更清晰。尽量避免继续和休息。

相关问题