.Net 2.0 新功能:委托中的协变与逆变(Covariance and Contravariance in Delegates)

委托中的协变与逆变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;

    }


}


 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值