| 

.NET C# Java Javascript Exception

6
Mir ist nicht ganz klar, wie bestimmte Javakonstrukte in C# übersetzt werden. Wie übersetzt man z.B. folgenden Code?
class C {
static <T> void copy (List<? extends T> a, List<? super T> b) {
for (T t : a)
b.add (t);
}
}


Dabei macht mit das ? extends T Probleme.
News:
09.08.2009
Leroy 315 2 5
4 Antworten
6
M.E. erfüllt dies den äquivalenten Zweck:
public static void copy<S, T> (List<S> a, List<T> b)
where S: T
{
foreach (T t in a)
b.Add(t);
}
07.09.2009
pjacobi 1,1k 2 7
5
Ein Vergleich von Generics in Java und C# bietet der Wiki-Artikel über den Unterschied der beiden Sprachen.

Der Code wird zu folgendem C#-Code übersetzt (auch wenn die Bezeichnungen gem. C# Design-Guidlines nicht korrket sind):
class C
{
static void copy<T>(List<T> a, List<T> b)
{
foreach (T t in a)
b.Add(t);
}
}


Dabei macht mit das ? extends T Probleme

Das bedeutet dass jeder Typ der von T erbt verwendet werden kann. Siehe hierzu: Using Generics With Wildcards and Extends
09.08.2009
gfoidl 9,4k 3 5
Das ist nicht ganz äquivalent. Mit dem Java-Code kann ich eine List<String> in eine List<Object> kopieren. Das kann Deine Variante nicht, weil Du nur einen Typ-Parameter verwendest.
Matthias Hlawatsch 01.07.2011
3
Einen guten Vergleich findet man unter:
Comparing Java and C# Generics

Der Artikel ist zwar auf Englisch, aber recht gut.
Was die Übersetzung von Java nach C# angeht, ist für dich wahrscheinlich folgender Abschnitt am interessantesten:
Java Wildcards (Java Method Constraints) - C# Equivalents
08.09.2009
stj 326 1 2
0
Eine schöne Erläuterung der Java-Generics gibt es hier: http://www.angelikalanger.com/Articles/JavaMagazin/Generics/GenericsPart1.html
07.02.2011
Markus Stäuble 285 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH