
逆变与协变
sinolover
完成项目,就要软硬兼施
展开
-
【转】逆变与协变详解
逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画图详细解析逆变与协变。变的概念我们都知道.Net里或者说在OO的世界里,可以安全地把子类的引用赋给父类引用,例如: 1 2 3 //父类 = 子类 stringstr = "string"; objectobj = str;//变了 ..原创 2020-12-21 15:18:05 · 324 阅读 · 0 评论 -
2020-12-19
逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画图详细解析逆变与协变。变的概念我们都知道.Net里或者说在OO的世界里,可以安全地把子类的引用赋给父类引用,例如://父类 = 子类string str = "string";object obj = str;//变了而C#里又有泛型的概念,泛型是对类型系统的进一步抽象,比上面简单的类型高级,把原创 2020-12-19 10:30:51 · 145 阅读 · 1 评论 -
【转】c# 协变与抗变
协变和抗变一.定义在说定义之前,先看一个简单的例子: public class Sharp { } public class Rectange : Sharp { }上面定义了两个简单的类,一个是图形类,一个是矩形类;它们之间有简单的继承关系。接下来是常见的一种正确写法:Sharp sharp = new Rectange();就是说“...原创 2020-02-10 20:52:19 · 506 阅读 · 1 评论 -
逆变与协变
一、遇到问题 这是基于.net3.5开发,实际工作中遇到一个问题。假设我们有一个 Base 类,一个 Derived 类,Derived 继承了 Base。如下: 1 2 3 4 5 6 7 8 classBase { } classDerived : Base...原创 2020-02-11 09:12:01 · 169 阅读 · 0 评论