Sono un principiante di C # e ho appena riscontrato un problema. C'è una differenza tra C # e Java quando si ha a che fare con l'operatore ternario ( ? :).
Nel seguente segmento di codice, perché la quarta riga non funziona? Il compilatore mostra un messaggio di errore di there is no implicit conversion between 'int' and 'string'. Anche la quinta riga non funziona. Entrambi Listsono oggetti, non è vero?
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
Tuttavia, lo stesso codice funziona 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
Quale caratteristica del linguaggio in C # manca? Se esiste, perché non viene aggiunto?
intnon è un oggetto. È un primitivo.
ArrayList<String>e ArrayList<Integer>diventa solo ArrayListnel bytecode. Ciò significa che sembrano essere esattamente lo stesso tipo in fase di esecuzione. Apparentemente in C # sono tipi diversi.