Como programador, esperaba que esto arrojara una excepción. ¿Hay alguna razón por la que trata null como ""?C# agregar string + null no arroja un error?
string s = "hello";
string t = null;
Console.WriteLine(s + t);
Salida:
hola
Sólo para enfatizar mi pregunta, ¿sabe por qué la decisión de convertir nulo en String.Empty se hizo? Esperaba que se agregara alguna cadena, pero había un problema más atrás donde no lo estaba recuperando correctamente y volvió con nulo. ¡El problema pasó desapercibido!
Aquí está un pseudocódigo de por qué creo que es malo (y por lo que se sorprendió al descubrir ningún error):
Se puede suponer sobrecargué ToString para dar el nombre de la persona o detalles acerca de ellos.
Person p = PersonDatabase.GetForName("Jimmy Gibbs");
Console.WriteLine("Name is: " + p.ToString());
se emite una excepción porque p es nula
String p = PersonDatabase.GetForName("Jimmy Gibbs").Name;
Console.WriteLine("Name is: " + p);
no lanza una excepción, a pesar de que p es nulo (se trata como "").
(Si quieres ser exigente y decir que no voy a ser capaz de obtener Nombre como GetforName será nula, lo veo como esta :)
String p = PersonDatabase.GetNameFromID(1234); // Returns a string or null if not found
Console.WriteLine("Name is: " + p);
(Si se utiliza este valor en una lista o matriz terminará con una entrada en blanco que es lo que rompió para mí, fue crear javascript e intentar obtener elemento por ID de "")
WoW, y + null en mayúscula la primera letra que es un Plus :) – Bolu
Solo puedo especular sobre por qué, pero un argumento a favor sería reducir la posibilidad de confundir a los desarrolladores novatos, que están acostumbrados a pensar en nulos excepciones como resultado de la desreferenciación; tenerlos causados por los operadores podría ser poco intuitivo. No es un argumento muy bueno, en mi opinión, pero estaría en línea con el principio de menor sorpresa (si no agregas nada a algo, aún esperas tener algo). –
Si puede usar string t = null, también debería poder usar otros operadores con null. – Bolu