Какова цель этого метода в исходном коде Silverlight SDK? - PullRequest
0 голосов
/ 07 июня 2009

Следующий фрагмент кода взят из 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 ]

2 голосов
/ 07 июня 2009

Он идет вверх по дереву в поисках любого элемента, который не имеет родителей или не является FrameworkElement Цикл представляет собой развернутую хвостовую рекурсию. Цикл while (true) тоже был бы в порядке.

1 голос
/ 07 июня 2009

Вероятно, это стиль Microsoft определения бесконечного цикла.

Цикл будет проходить через каждого родителя до тех пор, пока его не удастся привести

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...