Jon*_*eet 32
好吧,在Java中List<T>
是一个接口,以:)开头
两者之间最重要的区别是C#和Java泛型之间的区别:Java泛型基本上执行编译时检查并在通用字段中包含一些元数据等 - 但实际对象在执行时不知道它的泛型类型时间.你不能问那是List<?>
什么?换言之,是.实现中对泛型类型参数的任何引用Object
基本上都是 - 所以a ArayList<String>
实际上是由一个Object[]
.在C#中,所有信息也在执行时可用 - 因此a List<string>
由a支持string[]
.
类似地,C#泛型允许值类型类型参数,因此您可以使用List<int>
C#但不能使用Java.
在方差等方面存在进一步的差异 - 但这已经走了很长一段路List<T>
.
就just ArrayList<T>
(Java)和List<T>
(.NET)而言,有两点不同:
ArrayList<T>
通过将当前容量乘以3/2来增长; .NET List<T>
将目前的容量增加了一倍当然,在公开的API方面还存在其他差异 - 如果您可以提供有关您感兴趣的差异类型的更多信息,我们可以提供更多帮助.
小智 4
您是否想了解他们的 API 或底层实现的差异?我相信 Java 泛型完全是通过编译器实现的——JVM 没有泛型的概念。对于 C#,泛型是 .Net 运行时的内置概念。维基百科似乎对两者有很好的比较:http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java#Generics
归档时间: |
|
查看次数: |
7423 次 |
最近记录: |