如何干这两个"条件做"?

naw*_*fal 0 c# dry while-loop

我有这样的函数(parent并且formToBeShown是WinForms表单实例):

if (parent == null)
    while (!formToBeShown.IsDisposed)
        Do();
else
    while (!parent.IsDisposed && !formToBeShown.IsDisposed)
        Do();
Run Code Online (Sandbox Code Playgroud)

我发现这些非常不优雅.我很乐意Do只调用一次这个函数.如果我可以将所有条件合并到一个while循环中,那就更好了.不知道我是否有脑屁,但我想不出有办法实现这一点.一些想法?

jag*_*ags 7

我认为使用下面的代码,你只能使用while循环一次.

while (!formToBeShown.IsDisposed && (parent == null || !parent.IsDisposed))
        Do();
Run Code Online (Sandbox Code Playgroud)