C# 4.0的强类型与弱类型
2013-08-13 17:33
225 查看
有了强类型和弱类型的概念,我们就可以这样的定义协变和逆变:如果类型TBar是基于强类型Bar的类型,而类型TFoo是基于弱类型Foo的类型,协变就是将TBar类型的实例赋值给TFoo类型的变量,而逆变则是将TFoo类型的实例赋值给TBar类型的变量。
强类型和弱类型指的是两个具有直接或者间接继承关系的两个类。如果一个类是另一个类的直接或者间接基类,那么它为弱类型,直接或者间接子类为强类型。后续的介绍中会用到的两个类Foo和Bar先定义在这里。Bar继承自Foo。Foo是弱类型,而Bar则是强类型。
有了强类型和弱类型的概念,我们就可以这样的定义协变和逆变:如果类型TBar是基于强类型Bar的类型,而类型TFoo是基于弱类型Foo的类型,协变就是将TBar类型的实例赋值给TFoo类型的变量,而逆变则是将TFoo类型的实例赋值给TBar类型的变量。
委托中的协变与逆变的使用
协变和逆变主要体现在两个地方:接口和委托,先来看看在委托中如何使用协变和逆变。现在我们定义了如下一个表示无参函数的泛型委托Function,类 型参数为函数返回值的类型。泛型参数之前添加了一个out关键字表示T是一个协变变体。那么在使用过程中,基于强类型的委托Fucntion实例就可以赋 值给基于弱类型的委托Fucntion变量。
强类型和弱类型指的是两个具有直接或者间接继承关系的两个类。如果一个类是另一个类的直接或者间接基类,那么它为弱类型,直接或者间接子类为强类型。后续的介绍中会用到的两个类Foo和Bar先定义在这里。Bar继承自Foo。Foo是弱类型,而Bar则是强类型。
有了强类型和弱类型的概念,我们就可以这样的定义协变和逆变:如果类型TBar是基于强类型Bar的类型,而类型TFoo是基于弱类型Foo的类型,协变就是将TBar类型的实例赋值给TFoo类型的变量,而逆变则是将TFoo类型的实例赋值给TBar类型的变量。
委托中的协变与逆变的使用
协变和逆变主要体现在两个地方:接口和委托,先来看看在委托中如何使用协变和逆变。现在我们定义了如下一个表示无参函数的泛型委托Function,类 型参数为函数返回值的类型。泛型参数之前添加了一个out关键字表示T是一个协变变体。那么在使用过程中,基于强类型的委托Fucntion实例就可以赋 值给基于弱类型的委托Fucntion变量。
相关文章推荐
- C#4.0入门 第一章 dynamic类型—第一页 dynamic类型((转)
- C#基本语法 - .Net 4.0 之 Dynamic 动态类型
- C# 4.0中的动态类型和动态编程
- 在Visual Studio 2010中使用C# 4.0的动态类型(转)
- C# 4.0中的动态类型和动态编程
- C# 4.0(vs2010)中的动态类型和动态编程
- C#4.0 dynamic动态类型
- C#4.0 新特性 动态类型Dynamic
- C# 4.0 中新的数据类型dynamic 的用法
- C#中的值类型与引用类型-译自《Essential C# 4.0》
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- C#中的值类型与引用类型-译自《Essential C# 4.0》
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- C# 4.0 不要跨程序集用dynamic指向匿名类型 (转载)
- C#的is和as操作符来进行强制类型转换&&值类型的拆箱、装箱
- CLR via C# 3 读书笔记(12):第2章 生成、打包、部署和管理应用程序与类型 — 2.4 将模块组合为程序集(上)
- 第五 讲 : 预定义数据类型 -【天轰穿.Net4趣味编程系列视频教程-vs2010轻松学习C#】
- C# .Net中的类型转换
- C#中DateTime类型的使用