C# vs Java - Generic Lists

后端 未结 2 798
南旧
南旧 2021-01-11 17:35

What are the differences of the C# and Java implementations of the generic List class?

2条回答
  •  北荒
    北荒 (楼主)
    2021-01-11 18:08

    Well, in Java List is an interface, to start with :)

    The most important difference between the two is the difference between C# and Java generics to start with: in Java generics basically perform compile-time checks and include some metadata in generic fields etc - but the actual object doesn't know its generic type at execution time. You can't ask a List what that ? is, in other words. Any references to a generic type parameter in the implementation act as Object, basically - so a ArayList is really backed by an Object[]. In C# all the information is available at execution time too - so a List is backed by a string[].

    Similarly C# generics allow value type type arguments, so you can have a List in C# but not in Java.

    There are further differences in terms of variance etc - but this is moving a long way from List.

    In terms of just ArrayList (Java) and List (.NET), a couple of differences:

    • Java lists override equals/hashCode, whereas they don't in .NET
    • ArrayList grows by multiplying the current capacity by 3/2; .NET's List doubles the current capacity instead

    Of course there are other differences in terms of the APIs exposed - if you could give more information about the kind of difference you're interested in, we could help more.

提交回复
热议问题