首页 > 其他分享 >42:泛型参数兼容泛型接口的不可变性

42:泛型参数兼容泛型接口的不可变性

时间:2022-12-20 16:58:40浏览次数:42  
标签:Pay void 42 Employee ISalary 泛型 可变性 class

协变:让返回值类型返回比声明的类型派生程度更大的类型,就是“协变”。

 

 class Program
    {
        static void Main(string[] args)
        {
            ISalary<Programmer> s = new BaseSalaryCounter<Programmer>();

            PrintSalary(s);

        }
        static void PrintSalary<T>(ISalary<T> s)
        {
            s.Pay();
        }
    }

    interface ISalary<T>
    {
        void Pay();
    }

    class BaseSalaryCounter<T> : ISalary<T>
    {
        public void Pay()
        {
            Console.WriteLine("Pay Base Salary!");
        }
    }

    class Employee
    {
        public string Name { get; set; }
    }

    class Programmer : Employee
    {

    }

    class Manager : Employee
    {

    }

 

标签:Pay,void,42,Employee,ISalary,泛型,可变性,class
From: https://www.cnblogs.com/wen-chen/p/16994367.html

相关文章

  • 34.为泛型参数设定约束
    1.指定参数是值类型(除Nullable)外,可有如下形式:publicvoidMethod<T>(Tt)whereT:struct{} 2.指定参数是引用类型,可有如下形式:publicvoidMethodl<T>(Tt)wher......
  • 泛型 ? extends E ? super E的区别
    packagecn.itcast.generic;importjava.util.ArrayList;importjava.util.Collection;publicclassSupperGenericDemo{ publicstaticvoidmain(String[]args){ ......
  • 2022-2023-1 20221420 漆心雨《实验八-Web部署》
    过程1根据博客《openEuler中基于LAMP部署WordPress》进行实验(部分过程截图)实验结果:进行到访问ip/wp-config.php时出现问题,显示无法访问文件。问题:进行到访问ip/wp-......
  • 泛型
    总是优先考虑使用泛型:避免在泛型类型中声明静态成员 staticvoidMain(string[]args){MyListmylist01=newMyList();MyList......
  • TS泛型
    有人疑惑:为什么使用泛型呢,使用any不好吗?从使用方面来讲,any是可以运行的!但是遇到如下的情况就必须使用泛型:教务系统中对学校人员进行年审一个function,既需要处理student类,t......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • 泛型和数据结构
    1定义:广泛的数据类型,用T或E表示只能是引用类型(基本类型数据用其包装类)2优势:(1)将运行时期的问题提前到编译器(2)避免强制类型转换(3)提高了程序的执行效率3使用一......
  • noi 1.5 42:画矩形
    描述根据参数,画出矩形。输入输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图......
  • 09.泛型、trait与生命周期
    一、删减重复代码fnmain(){letnumber_list=vec![34,50,25,100,65];letmutlargest=number_list[0];fornumberinnumber_list{......
  • 代码随想录Day42
    回溯算法理论基础:回溯算法的本质是穷举,可以通过剪枝来优化回溯的效率。回溯问题一般应用于:组合问题、切割问题、子集问题、排列问题、棋盘问题组合和排列的区别在于:组......