以下代码片段来自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;
}
答案 0 :(得分:2)
它正在树上寻找任何无父或不是FrameworkElement的元素。循环是展开的尾递归。一段时间(真实)循环也会很好。
答案 1 :(得分:1)
这可能是微软定义无限循环的风格。
循环将遍历每个父级,直到它无法转换为止。