![]() |
1
30
这个特性称为“返回类型协方差”。C不支持它,原因如下: 1)clr不支持。为了使它在C中工作,我们只需要吐出一堆小助手方法,这些方法对返回类型进行强制转换,以得到正确的结果。没有什么能阻止你自己去做。 2)Anders认为返回类型协方差不是一个好的语言特性。 3)我们对语言有很多更高的优先级。我们只有有限的预算,所以我们尽量在任何给定的版本中尽可能做到最好的功能。当然,这很好,但如果你愿意的话,你自己做就足够容易了。更好的方法是我们花时间添加一些功能来改善开发人员的体验,或者为语言添加更多的代表性功能。 |
![]() |
2
16
您可以使用显式接口实现来避免这个问题。
|
![]() |
3
5
签名必须与接口指定的完全匹配。您没有理由不能返回的实例
因为合理的原因……从代码可读性的角度来看,这可能更可取。
可以显式实现接口,并提供返回
|
![]() |
4
3
因为C在编译时不支持接口的co和contravriance。这样,ia.test()方法的实现必须与其声明完全匹配。但是,您可以在运行时返回x的实例 |
![]() |
5
1
必须为任何非抽象类中的所有方法声明主体。 试试这个:
|
![]() |
6
1
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |