C# · 12月 29, 2021

C#与Java – 通用列表

通用List类的C#和 Java实现有什么区别?解决方法 那么,在Java List< T>是一个界面,开始:)

两者之间最重要的区别是C#和Java泛型开始之间的区别:在Java泛型中基本上执行编译时检查并在通用字段等中包含一些元数据,但是实际的对象在执行时不知道它的泛型类型时间.您不能要求列表<?>那是什么换句话说就是任何对实现中的通用类型参数的引用基本上都是Object,所以ArayList< String>真的是由Object []支持.在C#中,所有信息在执行时也可用,所以列表< string>由字符串[]支持.

类似地,C#泛型允许值类型类型参数,因此您可以使用List< int>在C#中,但不是Java.

在方差等方面有进一步的差异 – 但这从List< T>移动了很长的路.

就只是ArrayList< T> (Java)和List< T> (.NET),有两个区别:

> Java列表覆盖equals / hashCode,而它们不在.NET中
> ArrayList< T>通过将当前容量乘以3/2来增长; .NET的列表< T>而是改变当前的容量

当然,在暴露的API方面还有其他的差异 – 如果您能够提供更多关于您感兴趣的差异的信息,我们可以帮助更多.