Ich bin ein C # -Neuling und habe gerade ein Problem. Beim Umgang mit dem ternären Operator ( ? :) gibt es einen Unterschied zwischen C # und Java .
Warum funktioniert die 4. Zeile im folgenden Codesegment nicht? Der Compiler zeigt eine Fehlermeldung von an there is no implicit conversion between 'int' and 'string'. Die 5. Zeile funktioniert nicht so gut. Beide Listsind Objekte, nicht wahr?
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
Der gleiche Code funktioniert jedoch in 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
Welche Sprachfunktion in C # fehlt? Wenn überhaupt, warum wird es nicht hinzugefügt?
intkein Objekt ist. Es ist ein Primitiv.
ArrayList<String>und ArrayList<Integer>wird nur ArrayListim Bytecode. Dies bedeutet, dass sie zur Laufzeit genau vom gleichen Typ zu sein scheinen . Anscheinend sind sie in C # verschiedene Typen.