C#委托与协变逆变

打印 上一主题 下一主题

主题 541|帖子 541|积分 1623

协变:子类向父类或基类转化
  1.     public class A { }
  2.     public class B : A { }
  3.     public class C : B { }
  4.     class Program
  5.     {
  6.         public static A T1() { return new A(); }
  7.         
  8.         public static B T2(){ return new B();}
  9.         public static C T3() { return new C(); }
  10.         public delegate object testDeleg();
  11.         //public delegate A testDeleg();
  12.         static void Main(string[] args)
  13.         {
  14.             testDeleg testDeleg = T1;
  15.             testDeleg testDeleg1 = T2;
  16.             testDeleg testDeleg2 = T3;
  17.         }
  18.     }
复制代码
逆变:父类向子类转化
  1.     public class A { }
  2.     public class B : A { }
  3.     public class C : B { }
  4.     class Program
  5.     {
  6.         public static void T1(A a) { }
  7.         public static void T2(B b) { }
  8.         public static void T3(C c) { }
  9.         public delegate void TestDelegate(C c);
  10.         public static TestDelegate dele;
  11.         static void Main(string[] args)
  12.         {
  13.             dele += T1;
  14.             dele += T2;
  15.             dele += T3;
  16.         }
  17.     }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表