未知的while while语句

本文关键字:while 语句 未知 | 更新日期: 2023-09-27 18:06:37

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

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;
}

未知的while while语句

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

当它们具有相同的条件时,就像在你的例子中一样,第二个是无用的。

编辑:

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

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

一行中有两个while语句。第二个可能会以无限循环结束,因为第一个会一直运行,直到第一个条件为真或baseType变为null。然后第二个循环开始:

while (baseType != typeof(Object));

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

你的代码是不完全相同的,因为第一个代码打破循环,如果baseType为null,然后在无限循环结束。我更喜欢你的代码,清晰多了。尽量避免continue和break