Come programmatore mi sarei aspettato che questo generasse un'eccezione. C'è una ragione per cui considera null come ""?C# aggiunta stringa + null non genera un errore?
string s = "hello";
string t = null;
Console.WriteLine(s + t);
uscita:
ciao
solo sottolineare la mia domanda, sai perché la decisione di trasformare nulla in String.Empty è stata fatta? Mi aspettavo che venisse aggiunta una stringa, ma c'era un problema più indietro in cui non si stava recuperando correttamente e tornava con null. Il problema è passato inosservato!
Ecco un pseudocodice del motivo per cui penso che sia male (e perché sono rimasto scioccato di scoprire nessun errore):
Si può supporre che sovraccaricato ToString di dare il nome della persona o dettagli su di loro.
Person p = PersonDatabase.GetForName("Jimmy Gibbs");
Console.WriteLine("Name is: " + p.ToString());
genera un'eccezione perché p è nullo
String p = PersonDatabase.GetForName("Jimmy Gibbs").Name;
Console.WriteLine("Name is: " + p);
non genera un'eccezione, anche se p è nullo (si tratta come "").
(Se si vuole essere pignoli e dire che non sarò in grado di ottenere Name come GetforName sarà nullo, penso come questo :)
String p = PersonDatabase.GetNameFromID(1234); // Returns a string or null if not found
Console.WriteLine("Name is: " + p);
(Se si utilizza questo valore in un lista o array finirai con una voce vuota che è ciò che ha rotto per me, stava creando javascript e cercando di ottenere l'elemento per ID di "")
WoW e + null in maiuscolo la prima lettera che è un Plus :) – Bolu
Posso solo speculare sul perché, ma un argomento a favore sarebbe quello di ridurre la possibilità di confondere gli sviluppatori inesperti, che sono abituati a pensare a null le eccezioni sono il risultato del dereferenziamento; averli causati dagli operatori potrebbe essere non intuitivo. Non è una buona argomentazione, secondo me, ma sarebbe in linea con il principio della meno sorpresa (se non aggiungi nulla a qualcosa, ti aspetti ancora di avere qualcosa). –
Se è possibile utilizzare string t = null, si dovrebbe essere in grado di utilizzare anche altri operatori con null. – Bolu