好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

.Net2.0新功能:委托中的协变与逆变(CovarianceandContrava

委托中的协变与逆变 ( Covariance and Contravariance in Delegates ) 委托中的协变 1. 当委托方法的返回类型具有的派生程序比委托签名更大时,就称为协变委托方法。因为方法的返回类型比委托签名的返回类型更具体,所以可对其进行隐式转换,这样该方法就

委托中的协变与逆变 ( Covariance and Contravariance in Delegates )

委托中的协变

1. 当委托方法的返回类型具有的派生程序比委托签名更大时,就称为协变委托方法。因为方法的返回类型比委托签名的返回类型更具体,所以可对其进行隐式转换,这样该方法就可用作委托。

2. 协变使得创建可被类和派生类同时使用的委托方法成为可能。

class Animals ... { }

class Dogs : Animals ... { }

class Program

... {

public delegate Animals HandlerMethod();

public static Animals FirstHandler() ... { return null ; }

public static Dogs SecondHandler() ... { return null ; }

static void Main()

... {

HandlerMethod handler1 = FirstHandler;

HandlerMethod handler2 = SecondHandler;

}

}


委托中的逆变

3. 当委托方法签名具有一个或多个参数,并且这些参数的类型派生自方法参数的类型时,就称为逆变委托方法。因为委托方法签名参数比方法参数更具体,因此可在传递给处理程序方法时对他们隐式转换。

4. 这样逆变使得大量类使用的更通用的委托方法的创建变得更简单。

class Animals ... { }

class Dogs : Animals ... { }

class Program

... {

public delegate void HandlerMethod(Dogs dog);

public static void FirstHandler(Animals elephant) ... { return null ; }

public static void SecondHandler(Dogs adog) ... { return null ; }

static void Main( string [] arg)

... {

HandlerMethod handler1 = FirstHandler;

HandlerMethod handler2 = SecondHandler;

}

}


查看更多关于.Net2.0新功能:委托中的协变与逆变(CovarianceandContrava的详细内容...

  阅读:50次