using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication6
{
class Program
{
public static ArgumentException FM(object s)
{
return new ArgumentException("aru");
}
static void Main(string[] args)
{
//逆变和协变
Func<object, ArgumentException> fn1 = FM;
Func<string, Exception> fn2 = fn1;
//里氏原则 Exception=ArgumentException 父类引用=子类对象的实例引用
Exception ret2= fn2("");
ArgumentException ret1= fn1("");
//ty的返回类型ArgumentException
var ty2 = ret2.GetType(); var ty1 = ret1.GetType();
//两个的实际类型都是System.ArgumentException
Console.WriteLine("ty1:"+ty1.ToString()+"\nty2:"+ty2.ToString());
Console.ReadKey();
}
}
} 原理图如下:

最新文章

  1. REPL环境
  2. Neo4j批量插入(Batch Insertion)
  3. 云时代的分布式数据库:阿里分布式数据库服务DRDS
  4. 一张图片说明MII
  5. Missing letters
  6. iPhone私有API
  7. list add元素覆盖之前元素问题思考
  8. JAVA学习第一课(初识JAVA)
  9. 什么是简单的分析SQL注入漏洞
  10. C# devExpress BandedGridView属性 备忘
  11. block循环饮用解决
  12. java课程设计——猜数游戏个人博客
  13. Java与算法之(6) - 八皇后问题
  14. 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)
  15. Node.js 工具模块
  16. Java使用URL类下载的图片不完整
  17. 13、Ajax的使用
  18. cocos Studio使用问题
  19. Eclipse配置注释模板详细介绍
  20. cordova微信支付回调App闪退

热门文章

  1. LeetCode Minimum Time Difference
  2. LA2218 Triathlon
  3. bzoj 3612 [Heoi2014]平衡——整数划分(dp)
  4. golang动态调用方法
  5. windows下通过.bat运行java程序
  6. java使用array.copy复制数组
  7. 分布式缓存系统 Memcached 状态机之SET、GET命令
  8. 2012_p2 寻宝 (treasure.cpp/c/pas)
  9. kali virtualbox
  10. 记一次oralce 11g r2 rac安装问题