2009-06-06 71 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

這可能是微軟定義無限循環的風格。

循環遍歷每個父元素,直到失敗。

相關問題