Soy un novato de C # y acabo de encontrar un problema. Existe una diferencia entre C # y Java cuando se trata del operador ternario ( ? :).
En el siguiente segmento de código, ¿por qué no funciona la cuarta línea? El compilador muestra un mensaje de error de there is no implicit conversion between 'int' and 'string'. La quinta línea no funciona tan bien. Ambos Listson objetos, ¿no?
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
Sin embargo, el mismo código funciona 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
¿Qué característica de lenguaje en C # falta? Si existe, ¿por qué no se agrega?
intno es un objeto. Es un primitivo.
ArrayList<String>y se ArrayList<Integer>convierte solo ArrayListen el código de bytes. Esto significa que parecen ser exactamente del mismo tipo en tiempo de ejecución. Aparentemente en C # son de diferentes tipos.