小编典典

C#与Java泛型

c#

我听说Generics的Java实现不如C#实现。在语法上看起来相似,这是Java实现的次要标准,还是出于宗教目的?


阅读 327

收藏
2020-05-19

共1个答案

小编典典

streloksi的链接消除差异方面做得很好。快速而肮脏的总结是…

在语法和用法方面。两种语言之间的语法大致相同。到处都是一些怪癖(最明显的是约束)。但是基本上,如果您可以阅读其中之一,则可能可以阅读/使用另一种。

虽然最大的区别在于实现上。

Java使用类型擦除的概念来实现泛型。简而言之,底层的编译类实际上不是通用的。他们编译为对象并强制转换。实际上,Java泛型是编译时的构件,可以在运行时轻松颠覆。

另一方面,借助CLR,C#可以实现泛型直至字节码。为了支持2.0中的泛型,CLR进行了几项重大更改。好处是性能提高,深度类型安全验证和反思。

再次,提供的链接有更深入的细分,我鼓励您阅读

2020-05-19