Func 还支持协变和逆变
// 类的简单层次结构。
public class Person { }
public class Employee : Person { }
class Program
{
static Employee FindByTitle(String title)
{
// 这是返回的方法的存根
// 具有指定头衔的员工。
return new Employee();
}
static void Test()
{
// 在不使用方差的情况下创建委托的实例。
Func<String, Employee> findEmployee = FindByTitle;
// 委托希望有一个方法可以返回Person,
// 但是您可以为其分配一个返回Employee的方法。
Func<String, Person> findPerson = FindByTitle;
// 您还可以分配代表
// 返回更多派生类型
// 返回返回派生类型较少的委托。
findPerson = findEmployee;
}
}