Silverlight SDK源代码中此方法的用途是什么?

时间:2009-06-06 22:07:37

标签: silverlight sdk

以下代码片段来自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; 
        } 

2 个答案:

答案 0 :(得分:2)

它正在树上寻找任何无父或不是FrameworkElement的元素。循环是展开的尾递归。一段时间(真实)循环也会很好。

答案 1 :(得分:1)

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

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