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 List
sind 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?
int
kein Objekt ist. Es ist ein Primitiv.
ArrayList<String>
und ArrayList<Integer>
wird nur ArrayList
im Bytecode. Dies bedeutet, dass sie zur Laufzeit genau vom gleichen Typ zu sein scheinen . Anscheinend sind sie in C # verschiedene Typen.