我看到一些人的代码是这样的:
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;
}
答案 0 :(得分:7)
没有while() ... while();
语句,所以它实际上是两个语句,如:
如果它们具有相同的条件,就像在你的例子中那样,第二个就没用了。
实际上,做一些测试后我才意识到它实际上是两个循环,例如:
while(...) { ... }
while(...);
答案 1 :(得分:4)
你连续有两个while语句。第二个可能最终成为无限循环,因为第一个运行直到第一个条件为真或baseType变为空。 然后第二个循环开始:
while (baseType != typeof(Object));
如果另一个线程未更改baseType,则循环不会终止。因为第一个循环检查相同的条件,所以第二个循环永远不会运行,除非baseType为null。
您的代码并不完全相同,因为如果baseType为null,则第一个代码会中断循环,然后在无限循环中结束。我更喜欢你的代码,它更清晰。尽量避免继续和休息。