- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace CSharp基础
- {
- class 委托的协变
- {
- //关于委托方法的返回类型协变
- //定义委托返回Person实例
- public delegate Person ReturnMyObj();
- public static void Main()
- {
- //注册委托
- ReturnMyObj mydel = new ReturnMyObj( 委托的协变.PorcessMyFunc ) ;
- Person reobj = mydel();
- if (reobj is Student)
- {
- Console.WriteLine("返回的是子类实例");
- }
- else
- {
- Console.WriteLine( "返回的不是子类实例" );
- }
- Console.ReadLine();
- }
- //按照委托签名,但返回的是子类的实例
- public static Person PorcessMyFunc()
- {
- return new Student();
- }
- }
- class Person
- {
- public string Name;
- public int Age ;
- }
- class Student : Person
- {
- public int StuID;
- }
- }
- //抗变:向父类的方向变化
- //协变:向子类的方向变化
C#中的协变与抗变
最新推荐文章于 2024-04-26 09:48:04 发布