Как программист, я ожидал, что это вызовет исключение. Есть ли причина, по которой он обрабатывает null как ""?
string s = "hello";
string t = null;
Console.WriteLine(s + t);
Вывод:
Привет
Чтобы подчеркнуть мой вопрос, знаете ли вы, почему было принято решение об обращении null в String.Empty? Я ожидал добавления некоторой строки, но возникла проблема еще дальше, когда она не возвращала ее правильно, и она вернулась с нулевым значением. Проблема осталась незамеченной!
Здесь псевдокод, почему я думаю, что это плохо (и почему я был шокирован, чтобы не обнаружить ошибки):
Вы можете предположить, что я перегрузил ToString, чтобы указать имя человека или данные о них.
Person p = PersonDatabase.GetForName("Jimmy Gibbs");
Console.WriteLine("Name is: " + p.ToString());
Выдает исключение, поскольку p равно null
String p = PersonDatabase.GetForName("Jimmy Gibbs").Name;
Console.WriteLine("Name is: " + p);
Не генерирует исключение, хотя p равно null (он рассматривает его как "").
(Если вы хотите быть разборчивым и сказать, что я не смогу получить имя, поскольку GetforName будет null, подумайте об этом как:)
String p = PersonDatabase.GetNameFromID(1234); // Returns a string or null if not found
Console.WriteLine("Name is: " + p);
(Если вы используете это значение в списке или массиве, вы получите пустую запись, которая для меня сломалась, она создавала javascript и пыталась получить элемент по идентификатору "")