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

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

 

 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
    {

    }

 

posted @ 2022-12-20 16:38  Wen_Chen  阅读(19)  评论(0)    收藏  举报