协变与逆变
2012-04-03 02:31
281 查看
协变与逆变是.NET 4.O 的新特性,协变和逆变允许数组类型、委托类型和泛型类型参数进行隐式引用转换。 协变保留分配兼容性,逆变与之相反.
一.协变
1.介绍概念之前,先看个例子
在.NET 4.0 赋值操作是有效的,这是因为IEnumerable<T>的定义发生了变化:查看原文
一.协变
1.介绍概念之前,先看个例子
/// <summary> /// 在.NET 4.0之前编译报错 /// </summary> class Program { public abstract class Person { public string Name { get; set; } } public class Student : Person {} public class Teacher : Person { } static void Main() { Student student = new Student(); Person person = student;// 这里,基类指向子类的引用,编译通过 IEnumerable<Student> students = null; IEnumerable<Person> persons = students;//这里 编译报错 } }
在.NET 4.0 赋值操作是有效的,这是因为IEnumerable<T>的定义发生了变化:查看原文
相关文章推荐
- 委托的匿名方法,以及在协变与逆变中的应用
- MSDN:委托与接口,协变与逆变
- 协变还是逆变,这还是个问题吗
- Covariant(协变)与 Contravariant(逆变)
- 协变和逆变
- C#中的协变和逆变
- .NET 4.0中的泛型的协变和逆变
- 好文章——C# 4.0新特性-"协变"与"逆变"以及背后的编程思想
- 面向对象设计——协变与逆变
- c# 协变和逆变
- scala-协变、逆变、上界、下界
- 【转】协变 逆变
- [置顶] Java中的逆变与协变
- C# 泛型的协变和逆变
- C#笔记 -- 协变、逆变
- Java中的逆变与协变
- (转)Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍
- .net中的协变和逆变
- Friday Q&A 2015-11-20:协变与逆变
- C#中委托的匿名方法,及其在协变与逆变中的应用