CLR VIA C# 泛型的协变和逆变
2016-01-22 09:19
666 查看
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("1"); ArgumentException ret1= fn1("1"); //ty的返回类型ArgumentException var ty2 = ret2.GetType(); var ty1 = ret1.GetType(); //两个的实际类型都是System.ArgumentException Console.WriteLine("ty1:"+ty1.ToString()+"\nty2:"+ty2.ToString()); Console.ReadKey(); } } } 原理图如下:
相关文章推荐
- C#获取DLL、程序路径,C#获取桌面、收藏夹等特殊系统路径
- 控制台编译C#
- C#进行Socket 连接发送和接收数据
- C#使用window API 控制打印纸张大小(转载)
- C# 委托获取多个订阅者的返回值
- c# PrintDocument 设置自定义纸张大小的示例
- C# 事件访问器(Event Accessor)
- C# WinForm 父窗体 子窗体 传值
- C# DataTable的詳細用法
- C#中为何要使用ref参数 (个人理解)
- C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"
- C# 值类型与引用类型 (上)
- C#中static类型的变量和方法
- C#类的 static变量
- C#链接文件的应用
- C#全角和半角转换
- 在C#中创建和读取XML文件
- C#语言基础(一)
- C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
- C#调用FFMPEG实现桌面录制(视频+音频+生成本地文件)【笔记】