C# 与 Java 泛型

标签 c# java generics comparison

我听说泛型的 Java 实现不如 C# 实现。在语法看起来很相似的情况下,Java 实现有什么不合标准的地方,还是一种宗教观点?

最佳答案

streloksi's link在打破差异方面做得很好。快速而肮脏的总结是......

在语法和用法方面。语言之间的语法大致相同。这里和那里的一些怪癖(最明显的是在约束中)。但基本上,如果你能读懂一个,你就可以读/用另一个。

最大的区别在于实现。

Java 使用类型删除的概念来实现泛型。简而言之,底层编译的类实际上并不是通用的。它们编译为 Object 和 casts。实际上,Java 泛型是编译时工件,在运行时很容易被破坏。

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

再次提供 link有更深入的分割,我鼓励您阅读

关于C# 与 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355060/

相关文章:

c# - 为什么 ConverterParameter 在 wpf 和 Silverlight 中不可绑定(bind)?

java - 将 manifest-first maven 项目的依赖打包到 jar 中

Java 实例化新的 Map.Entry-array

java - Java 和 Kotlin 泛型方法的区别

c# - Azure AD API 请求 401 未经授权

c# - 使用 StreamWriter 构造函数和 File.CreateText 的区别

c# - 在 Xamarin.Android 中的日历之间转换日期

java - 我可以在现有运行的 jvm 中实例化类并与 Activity 对象交互吗?

java - 为什么 epublib for android web view 加载数据 url 显示 [B@41408d8?

.NET 错误 : ldtoken of an instantiated generic method