0

以下代码片段来自 Silverlight SDK,我试图了解它的原因。谁能解释for循环的必要性?

 internal static DependencyObject GetVisualRoot(DependencyObject d)
        { 
            DependencyObject root = d; 
            for (; ; )
            { 
                FrameworkElement element = root as FrameworkElement;
                if (element == null)
                { 
                    break;
                }

                DependencyObject parent = element.Parent as DependencyObject; 
                if (parent == null)
                { 
                    break;
                }

                root = parent;
            }
            return root; 
        } 
4

2 回答 2

2

它在树上寻找任何无父元素或非 FrameworkElement 的元素。循环是展开的尾递归。while(true) 循环也可以。

于 2009-06-06T22:10:27.597 回答
1

这可能是微软定义无限循环的风格。

循环将遍历每个父级,直到它无法转换。

于 2009-06-06T22:08:29.427 回答