为什么没有协变返回类型

为什么没有协变返回类型

本文介绍了为什么没有协变返回类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 此代码无法在C#中编译: class base_class {} class derived_class:base_class {} class A { public virtual base_class f() { 返回新的base_class(); } } B级:A { 公共覆盖derived_class f()//协变返回类型 { 返回new derived_class(); } } 有没有计划支持协变返回类型(也许是 参数类型? ?)即将推出的C#版本?它可以使一些OO 设计变得更加简单...... StefanHi,this code does not compile in C#:class base_class {}class derived_class : base_class {}class A{public virtual base_class f(){return new base_class();}}class B : A{public override derived_class f()// covariant return type{return new derived_class();}}Are there any plans to support covariant return types (and maybeparameter types???) in upcoming C# versions? It could make some OOdesigns so much simpler...Stefan推荐答案 我没有尝试过,但如果协变我不会感到惊讶返回 类型在C#v2中可用,以及泛型 - 我相信在Java世界中,仿制药使协方差自然消失。 您可以随时下载.NET v2测试版并试用它: - Jon Skeet - < sk ** *@pobox.com> http://www.pobox.com/~双向飞碟 如果回复小组,请不要给我发邮件I haven''t tried it, but I wouldn''t be surprised if covariant returntypes became available in C#v2, along with generics - I believe in theJava world, generics made covariance just drop out naturally.You could always download the .NET v2 beta and try it :)--Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeetIf replying to the group, please do not mail me too 不,当然不会。这与 相同BaseClass bc = new Derived(); 我只是想知道为什么这个非常简单的概念没有实现在C#中: IMO它必须在CIL中实现(至少在2.0中)因为C ++支持的协变返回类型。 StefanNo, it will not, of course. It''s the same asBaseClass bc = new Derived();I just wonder why this quite simple concept is not implemented in C#:IMO it _must_ be implemented in the CIL (at least in 2.0) becausecovariant return types supported by C++.Stefan 这篇关于为什么没有协变返回类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-14 04:50