zoukankan      html  css  js  c++  java
  • .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;

        }


    }


     
  • 相关阅读:
    Git 远程仓库分支管理
    Git 本地仓库管理
    Git 本地仓库管理
    SQLAlchemy_定义(一对一/一对多/多对多)关系
    SQLAlchemy_定义(一对一/一对多/多对多)关系
    自动化生成 Openstack 新项目开发框架
    自动化生成 Openstack 新项目开发框架
    Python 数据结构_队列
    Python 数据结构_队列
    Python 数据结构_堆栈
  • 原文地址:https://www.cnblogs.com/hainange/p/6153344.html
Copyright © 2011-2022 走看看