Was sind die Unterschiede der C# - und Java-Implementierungen der generischen List-Klasse?C# vs Java - Generische Listen
Antwort
Fragen Sie nach Unterschieden in ihrer API oder der zugrunde liegenden Implementierung? Ich glaube, dass Java-Generika vollständig über den Compiler implementiert werden - die JVM hat keine Vorstellung von Generika. Für C# sind Generika ein integriertes Konzept der .NET-Laufzeit. Wikipedia scheint einen guten Vergleich der beiden haben: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java#Generics
Nun, in Java List<T>
eine Schnittstelle, mit :)
Der wichtigste Unterschied zwischen den beiden ist der Unterschied zwischen C# und Java Generics beginnen Beginnen mit: In Java führen Generics im Grunde Kompilierzeitprüfungen durch und enthalten einige Metadaten in generischen Feldern usw. - aber das tatsächliche Objekt kennt seinen generischen Typ zur Ausführungszeit nicht. Sie können nicht fragen, List<?>
was das? ist mit anderen Worten. Beliebige Verweise auf einen generischen Typparameter in der Implementierung wirken grundsätzlich wie Object
- so wird ein ArayList<String>
wirklich von einem Object[]
unterstützt. In C# sind alle Informationen zur Ausführungszeit ebenfalls verfügbar - so wird eine List<string>
durch eine string[]
unterstützt.
In ähnlicher Weise erlauben C# -Generien Werttyp-Argumente, so dass Sie in C# List<int>
haben können, aber nicht in Java.
Es gibt weitere Unterschiede in Bezug auf die Varianz usw. - aber dies ist ein weiter Weg von List<T>
.
In Bezug auf die nurArrayList<T>
(Java) und List<T>
(.NET), ein paar Unterschiede:
- Java listet Überschreibung gleich/hashCode, während sie .NET nicht in tun
ArrayList<T>
wächst durch Multiplizieren der aktuellen Kapazität mit 3/2; .NET istList<T>
verdoppelt die aktuelle Kapazität statt
Natürlich gibt es noch andere Unterschiede in Bezug auf die APIs ausgesetzt - wenn Sie mehr Informationen über die Art der Unterschied geben könnte Sie interessiert sind, könnten wir mehr helfen.
Und ich erinnere mich zu fragen, warum Sie immer upvotes @ meta bekommen würde. Gute Antwort. –
Aber C# -Liste
- 1. Kundenrechnungsformular; generische Listen; C#
- 2. Upcasting und generische Listen
- 3. Java generische Schnittstelle Leistung
- 4. C#, generische Möglichkeit, auf verschiedene Listen innerhalb einer Klasse zuzugreifen
- 5. Wie generische Listen dynamisch in C# umgewandelt werden?
- 6. Generics vs. Array Listen
- 7. Python-Sets vs Listen
- 8. Java generische Methode Parametertyp in Klammern vs. außerhalb Klammern
- 9. C# - Listen von Listen
- 10. Java generische Felder
- 11. C# versiegelt vs Java endgültig
- 12. Java Zuweisungsoperator Verhalten vs C++
- 13. Java Vererbung vs. C# Vererbung
- 14. Java-Paket vs C# Baugruppen
- 15. Vergleicht man zwei große generische Listen
- 16. Generische Liste FindAll() vs. foreach
- 17. C# List Generische Erweiterung Methode vs Non-Generic
- 18. Java Generische Typenvariablen
- 19. Generische Methode in Java
- 20. Java-generische Elementinitialisierung
- 21. Generische Baumimplementierung in Java
- 22. generische DAO in Java
- 23. Java generische Art Argumente
- 24. Java generische Methoden verstehen
- 25. Java - Generische statische Methoden
- 26. Java Play2 - Generische Vorlagen?
- 27. Java generische Methode Erklärung
- 28. Understanding Java generische Methode
- 29. Java generische Felddeklaration
- 30. Prolog ist vs = mit Listen
Nun, zum einen ist List (http://java.sun.com/javase/7/docs/api/java/util/List.html) eine Schnittstelle in Java, keine Klasse. Java entspricht der C# generischen List Klasse ist ArrayList –
obwohl etwas veraltet, scheint interessant: http://www.artima.com/intv/generics.html – Zaki