您的位置:首页 > 其它

协变与逆变

2012-04-03 02:31 281 查看
  协变与逆变是.NET 4.O 的新特性,协变和逆变允许数组类型、委托类型和泛型类型参数进行隐式引用转换。 协变保留分配兼容性,逆变与之相反.

  一.协变

   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>的定义发生了变化:查看原文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: