я первоначально имел некоторый условный код вроде этого:Почему строка, назначенная String.Empty, рассматривается как null (C#)?
String _monthYr4;
. . .
if (_monthYr4.Length > 0)
... но когда _monthYr4 не был назначен до условных существ достигли, он взорвался во время выполнения, со старым каштаном, «ссылка на объект не установлен в экземпляр объекта. "
Поэтому я добавил, что я думал, что строковое значение по умолчанию (хотя и пустой), чтобы _monthYr4, как это:
private String _monthYr4 = String.Empty;
... но она по-прежнему врезался в точно таким же образом. Поэтому я, наконец, сменил условие на это:
if (null != _monthYr4)
... и это отлично работает. Но почему? Должно ли _monthYr4 быть ненулевым, после присвоения ему String.Empty?
На стороне записки, прежде чем я назначен String.Empty к _monthYr4, это выглядело так:
String _monthYr4;
... но после того, как я назначил String.Empty к _monthYr4, Visual Studio (или Resharper, может быть, ?) автоматически добавили «частную» часть, так что это:
private String _monthYr4 = String.Empty;
... но я не знаю почему.
Вы уверены, что код перед условием не устанавливает вашу переменную в нуль? – esskar
'String.Empty' является эквивалентом' '' '. Там должно быть что-то актуальное, что вы не показываете нам. –
Это не должно терпеть неудачу. Очистите/восстановите свой проект. перезапустите визуальную студию, это 'String _monthYr4 = String.Empty; Console.WriteLine (_monthYr4.Length); 'никогда не должен терпеть неудачу. – Habib