关于抗变和协变的问题

问题描述

抗变和协变到底如何解释?C#高级编程第六版与第七版好像讲的截然相反!还是我理解的有问题第六版说返回类型协变参数抗变而发现所有读过第七版的对这一概念的解释与第六版截然相反,这个概念到底如何看

解决方案

解决方案二:
你先把你的理解写出来呀。否则大家只能贴msdn了。

时间: 2024-12-23 01:29:58

关于抗变和协变的问题的相关文章

求解释一下:.NET中,参数类型是协变的,方法的返回类型是抗变的。

问题描述 两个概念不太明白,求解释下~ 解决方案 解决方案二:https://zh.wikipedia.org/wiki/%E5%8D%8F%E5%8F%98%E4%B8%8E%E9%80%86%E5%8F%98看看这个你就懂了解决方案三:引用1楼mrjia的回复: https://zh.wikipedia.org/wiki/%E5%8D%8F%E5%8F%98%E4%B8%8E%E9%80%86%E5%8F%98看看这个你就懂了 嗯,里面讲的参数是抗变的,和C#相反.这样说对吧:协变,子类作父

数组协变带来的静态类型漏洞

在刚才一个通不过Java字节码校验的例子里,我们看到JVM会对其所加载的.class文件做校验,以保证 类型安全.但Java里有这么一种情况,是编译器和JVM的字节码校验都无法检测到,而要到实际运行的时 候才能发现的错误--数组的协变导致的类型静态系统漏洞. 还是像前一帖一样,用ASM来生成字节码: Java代码 import java.io.FileOutputStream; import org.objectweb.asm.ClassWriter; import org.objectweb.

Visual Studio 2010:泛型委托的协变、逆变Demo

在编程语言中,"协变"是指能够使用与原始指定的派生类型相比,派生程度 更大的类型."逆变"则是指能够使用派生程度更小的类型.在 .NET Framework 4 和 Visual Studio 2010 中,C# 和 Visual Basic 都支持在泛型接口和委托中 使用协变和逆变,并允许隐式转换泛型类型参数. 如果泛型接口或委托的泛型参数声明为协变或逆变,则将该泛型接口或委托称 为"变体".C# 和 Visual Basic 都允许您创建自己

link环境下,我想追问下,如何用select操作符实现协变?

问题描述 link环境下,我想追问下,如何用select操作符实现协变? link环境下,我想追问下,如何用select操作符实现协变? 解决方案 用Select,对每个元素做强制类型转换,再汇总得到集合,相当于对集合进行协变.

Java中的逆变与协变(转)

看下面一段代码 Number num = new Integer(1); ArrayList<Number> list = new ArrayList<Integer>(); //type mismatch List<? extends Number> list = new ArrayList<Number>(); list.add(new Integer(1)); //error list.add(new Float(1.2f)); //error 有人会

C# 4.0新特性-&quot;协变&quot;与&quot;逆变&quot;以及背后的编程思想

在<上篇>中我们揭示了"缺省参数"的本质,现在我们接着来谈谈C#4.0中另一个重要的新特性:协变(Covariance)与逆变(Contravariance).对于协变与逆变,大家肯定不会感到陌生,但是我相信有很多人不能很清晰地说出他们之间的区别.我希望通过这篇文章能够让读者更加深刻的认识协变与逆变.但是也不排除另一种可能,那就是读者这篇文章你对这两个概念更加模糊.文章一些内容仅代表个人观点,如有不妥,还望指正. 目录 一.两个概念:强类型与弱类型 二.委托中的协变与逆变的

c++ 编译错误-大神请指教c++错误:返回类型与重写虚拟函数的返回类型既不相同也不协变

问题描述 大神请指教c++错误:返回类型与重写虚拟函数的返回类型既不相同也不协变 #include using namespace std; class base1{ public: virtual void display() const; }; void base1::display() const{ cout<<"base1::display()"<<endl; } class base2:public base1{ public: void displa

“协变”、“逆变”与Delegate类型转换

我在发表了<Delegate如何进行类型转换?>之后又想到了其他一些相关的东西,除了简单地分析如何通过Emit实现EventHandler的类型转换之外,还加上关于Delegate"协变"与"逆变"的一些东西,算是对前一篇文章的完善. 目录 一.从Delegate的"协变"与"逆变"说起 二.EventHandler<TEventArgs>是否换一种定义方式更好? 三."统一的事件注册&quo

C#4.0新特性-"协变"与"逆变"以及背后的编程思想

在<上篇>中我们揭示了"缺省参数"的本质,现在我们接着来谈谈C#4.0中另一个重要的新特性:协变(Covariance)与逆变(Contravariance).对于协变与逆变,大家肯定不会感到陌生,但是我相信有很多人不能很清晰地说出他们之间的区别.我希望通过这篇文章能够让读者更加深刻的认识协变与逆变.但是也不排除另一种可能,那就是读者这篇文章你对这两个概念更加模糊.文章一些内容仅代表个人观点,如有不妥,还望指正. 目录 一.两个概念:强类型与弱类型 二.委托中的协变与逆变的