Sou um novato em C # e acabei de encontrar um problema. Há uma diferença entre C # e Java ao lidar com o operador ternário (? : ).
No segmento de código a seguir, por que a 4ª linha não funciona? O compilador mostra uma mensagem de erro de there is no implicit conversion between 'int' and 'string'. A 5ª linha não funciona tão bem. Ambos Listsão objetos, não são?
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
No entanto, o mesmo código funciona em 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
Qual recurso de linguagem está faltando no C #? Se houver, por que não foi adicionado?
intnão é um objeto. É um primitivo.
ArrayList<String>e ArrayList<Integer>torna - se apenas ArrayListno bytecode. Isso significa que eles parecem ser exatamente do mesmo tipo em tempo de execução. Aparentemente, em C #, eles são de tipos diferentes.