zoukankan      html  css  js  c++  java
  • C#

    百度百科逆变的概念,再来练下对逆变的理解。

    在下面的示例代码中,定义三个委托方法,一个普通方法  

    委托方法的签名参数继承于Human,普通方法的参数是父类。

    因此,在调用委托时,可把子类转换为父类。

    这样可以使我们的普通方法更具通用性。

    using System;

    namespace ConsoleApp1

    {

    class Human { }

    class Student : Human { }

    class Teacher : Human { }

    class Program

    {

    public delegate void StudentDelegate(Student stu);

    public delegate void TeacherDelegate(Teacher tea);

    public delegate void HumanDelegate(Human h);

    public static void TestHandler(Human human)

    {

    Console.WriteLine("This is class :{0}", human.GetType());

    }

    public static void StudentHandler(Student human)

    {

    Console.WriteLine("This is class :{0}", human.GetType());

    }

    static void Main(string[] args)

    {

    Console.WriteLine("input any key to start.");

    Console.Read();

    StudentDelegate handler1 = TestHandler;

    TeacherDelegate handler2 = TestHandler;

    HumanDelegate handler3 = TestHandler;

    handler1.Invoke(new Student());

    handler2.Invoke(new Teacher());

    handler3.Invoke(new Human());

    Console.Read();

    }

    }

    }

  • 相关阅读:
    JeeSite信息化快速开发平台
    Redis操作使用规范
    使用Redis配置JAVA_环境
    BZOJ 1029 [JSOI2007]建筑抢修 已更新
    COJ 2108 Day7-例1
    COJ 2105 submatrix
    COJ 2106 road
    更新一下缺省源
    hiho #1055 : 刷油漆
    COJ 0047 20702最大乘积
  • 原文地址:https://www.cnblogs.com/tcli/p/6661803.html
Copyright © 2011-2022 走看看