我正在学习WPF并且有一段代码我不太明白用约束声明的方法:
public static T FindAncestor<T>(DependencyObject dependencyObject)
where T : class // Need help to interpret this method declaration
我知道这是一个共享方法而且T是一个类,但是什么是'static T FindAncestor'?整体解释它有麻烦。谢谢!
代码:
public static class VisualTreeHelperExtensions
{
public static T FindAncestor<T>(DependencyObject dependencyObject)
where T : class // Need help to interpret this method
{
DependencyObject target = dependencyObject;
do
{
target = VisualTreeHelper.GetParent(target);
}
while (target != null && !(target is T));
return target as T;
}
}
答案 0 :(得分:1)
T
是一个类型的占位符 - 即所谓的泛型。 where
子句是一个通用约束,需要引用类型。
答案 1 :(得分:1)
希望我理解你的问题。
这是公共静态功能的声明。
如果不是你要求的,请更好地解释。
答案 2 :(得分:1)
前面的static
关键字意味着您无需实例化VisualTreeHelperExtensions
即可调用FindAncestor
方法。你可以说:
VisualTreeHelperExtensions.FindAncestor<MyClass>(myObj);
myObj
是DependencyObject
的位置。正如您所说,where
确保T
(在这种情况下为MyClass
)确实是一个类
为方便起见,像这样的方法可以这样声明:
public static T FindAncestor<T>(this DependencyObject dependencyObject)
where T : class // Need help to interpret this method declaration
这将允许您像这样调用方法:
myObj.FindAncestor<MyClass>();
事后有效地向DependencyObject
添加方法。
答案 3 :(得分:1)
这意味着它是一个静态方法(您可以在没有创建类的实例的情况下调用它)返回类型为T的对象。FindAncestor
是方法的名称。