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();

    }

    }

    }

  • 相关阅读:
    Python函数式编程(一):高级函数
    Python高级特性:列表生成式
    Python高级特性:迭代
    Python高级特性:切片
    Python学习笔记
    关于相机拍照获取图片onActivityResult返回data 为null的问题
    191019
    状语和状语从句
    191018
    191017
  • 原文地址:https://www.cnblogs.com/tcli/p/6661803.html
Copyright © 2011-2022 走看看