Les génériques C # n'ont pas de caractères génériques car
Les caractères génériques de type représentent la classe parentale des types génériques en Java
Public void test (list <object> c) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}// Créer une liste <string> Liste d'objets <string> strList = new ArrayList <string> (); // Calendrier le test de méthode de test précédent (STRList);
Compilez le programme ci-dessus, et une erreur de compilation se produira au test (STRList), ce qui signifie que la liste <string> ne peut pas être considérée comme une sous-classe de liste <objet>. Pour le moment, vous devez utiliser le type de joker, qui est un?
La liste ci-dessus <objet> peut être remplacée par la liste <?> Puis il peut être compilé
Public void test (list <?> c) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}Liste <string> peut être utilisée comme sous-classe de liste <?>, List <?> Peut être utilisée comme classe parentale de n'importe quel type de liste,
Et si vous voulez être la classe parent de List <string> au lieu de la liste <nt>? Écrivez-le comme cette liste <? étend la chaîne>
En C #, c'est le type de contrainte
classe myclass <t, u> où t: classe où u: struct {} Interface ImyInterface {} classe Dictionary <Tkey, TVAL> Where Tkey: ICOMPARABLE, IENUMable où TVAL: IMYInterface {public void add (Tkey Key, Tval Val) {}}Limite supérieure pour les jokers génériques contraints en Java:
// indique que le type t doit être la classe numérique ou sa sous-classe, et doit implémenter la classe publique Java.io.Serializable Apple <T étend le numéro et java.io.serializable> {}Ce qui précède est le contenu complet de la comparaison et de l'analyse des jarneques génériques Java et C # qui vous sont apportés par l'éditeur. J'espère que tout le monde soutiendra wulin.com ~