2009-06-06 90 views
0

下面的代码片段来自Silverlight SDK,我试图理解它是这样的原因。 任何人都可以解释for循环的需要吗?Silverlight SDK源代码中此方法的用途是什么?

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

它正在树上寻找任何无父或不是FrameworkElement的元素。该循环是一个展开的尾部递归。一段时间(真的)循环也可以。

1

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

循环遍历每个父元素,直到失败。

相关问题