Je suis un débutant en C # et je viens de rencontrer un problème. Il y a une différence entre C # et Java lorsqu'il s'agit de l'opérateur ternaire ( ? :).
Dans le segment de code suivant, pourquoi la 4ème ligne ne fonctionne-t-elle pas? Le compilateur affiche un message d'erreur de there is no implicit conversion between 'int' and 'string'. La 5ème ligne ne fonctionne pas aussi bien. Les deux Listsont des objets, n'est-ce pas?
int two = 2;
double six = 6.0;
Write(two > six ? two : six); //param: double
Write(two > six ? two : "6"); //param: not object
Write(two > six ? new List<int>() : new List<string>()); //param: not object
Cependant, le même code fonctionne en Java:
int two = 2;
double six = 6.0;
System.out.println(two > six ? two : six); //param: double
System.out.println(two > six ? two : "6"); //param: Object
System.out.println(two > six ? new ArrayList<Integer>()
: new ArrayList<String>()); //param: Object
Quelle fonctionnalité de langage en C # est manquante? Le cas échéant, pourquoi n'est-il pas ajouté?
intn'est pas un objet. C'est un primitif.
ArrayList<String>et ArrayList<Integer>devient juste ArrayListdans le bytecode. Cela signifie qu'ils semblent être exactement du même type au moment de l'exécution. Apparemment, en C #, ils sont de types différents.