Нужно ли устанавливать переменную члена строки класса в ""? Будет ли это null
, если вы этого не сделаете?Нужно ли устанавливать переменную-строку члена класса в ""?
ответ
Причина, по которой строка будет нулевой, состоит в том, что строка является ссылочным типом, а значение по умолчанию для всех ссылочных типов равно null (т.е. нет ссылки).
Лучшим справочником является Default Values Table (помните, все ссылочные типы устанавливаются в нуль по умолчанию), но некоторые примеры ниже дают приличную идею:
string a = default(string); // null
String b = default(String); // null
int c = default(int); // 0
int? d = default(int?); // null
Object e = default(object); // null
double f = default(double); // 0.0
// an instance of someStruct with fields set to default(theirType)
someStruct g = default(someStruct);
Строка рода, кажется, тип значения потому, что он кажется таким примитивным. Кроме того, это неизменное значение, что вы никогда не можете изменить строку, вместо этого вы просто устанавливаете строковые символы для указания на новые строки «значения» (которые сами являются ссылками), создавая впечатление, что строка является типом значения.
Например:
string a = "boo";
/* Mem contains reference to "boo" and symbol 'a' => reference("boo") */
a = "gah";
/* Mem contains references to "boo" and "gah". symbol 'a' -> reference("gah") */
Для получения дополнительной информации о строках см this great article.
И не забудьте the Default Values Table.
Да, значение по умолчанию для строки равно null.
Значение по умолчанию для строки равно null.
Это уже задавали и ответил много раз. И предыдущие ответчики здесь сразу перешли к вашему второму вопросу, не отвечая на ваш первый вопрос, который, как я чувствую, более важен, поскольку простой поиск в Google сказал бы вам, что такое по умолчанию.
«Нужно ли устанавливать переменную-член строки класса в« "?"
Это зависит от того, что вы подразумеваете под «необходимостью». Если вы читаете, тогда да, может быть очень нужно. Это будет личное решение, требующее принятия вами единодушного решения. Я лично считаю вещи более читаемыми, если переменным присваивается значение по умолчанию в соответствующем месте. Если вы сделаете это в нужном месте, компилятор будет (может) оптимизировать его, так что это действительно сводится к читабельности.
Некоторое превосходное понимание можно найти here.
И если вам «нужно» установить строки в '' '', чтобы быть ясными, то вы также можете следовать советам StyleCop и вместо этого использовать 'string.Empty'. –
Я не сторонник между «» и «нуль», только между ничего и ничего. Если переменная никогда не инициализируется, она требует очень короткой, но по своей сути прерывистой паузы, чтобы думать о том, что по умолчанию, когда переменная не установлена. Устранение этих перерывов (неинициализированные переменные - всего лишь один пример, а второстепенный - это одна из сущностей удобочитаемости, на мой взгляд. – sliderhouserules
- Нужно ли устанавливать переменную-член строки класса в ""?
Не, если ваши методы класса знают, что значение по умолчанию переменной-члена строка null
и иметь дело с ним соответствующим образом (то есть, проверить его на нуль перед использованием его значения).
В противном случае, вероятно, это хорошая идея инициализировать его для некоторого ненулевого значения. Это может упростить ваши методы, если они могут предположить, что переменная имеет ненулевое значение во все времена.
- Будет ли это null, если вы не сделаете это?
Да, переменная члена ссылочного типа (например, string
) без явного значения инициализатора инициализируется null
по умолчанию, когда объект класса построен.
Кроме того, если ваше приложение не проводит различие между пустым и пустым "", то при проверке значения используйте String.IsNullOrEmpty()
. Если вы также обрабатываете пробелы так же, как и пустые, то используйте новый String.IsNullOrWhiteSpace()
. null, "" и "". Любые символы без пробелов будут ложными.
string s = GetSomeString();
if(String.IsNullOrEmpty(s)) {
//do whatever here
}
- 1. Нужно ли устанавливать Glassfish?
- 2. Нужно ли устанавливать ограничения?
- 3. Нужно ли устанавливать домен NetworkCredential?
- 4. Нужно ли устанавливать hadoop в/usr/local?
- 5. Нужно ли устанавливать флаги в синхронизированные блоки?
- 6. Нужно ли устанавливать Glassfish в каталог Java?
- 7. Нужно ли устанавливать autorelease в инструкции alloc?
- 8. Нужно ли устанавливать max_length в поле модели?
- 9. Нужно ли устанавливать .DS_Store в Windows?
- 10. Как проверить, нужно ли устанавливать VCRedist?
- 11. Нужно ли устанавливать делегаты для GCM iOS?
- 12. Нужно ли устанавливать Rails как системный жемчуг?
- 13. Нужно ли устанавливать Boost для создания odeint?
- 14. Нужно ли всем пользователям сценариев устанавливать Powershell?
- 15. Нужно ли устанавливать FlushMode.Commit при использовании ITransactions?
- 16. Нужно ли устанавливать номер раздела повсюду? spark
- 17. Нужно ли устанавливать scrollview.delegate как self?
- 18. Как определить, нужно ли устанавливать VCRedist?
- 19. Нужно ли устанавливать git для использования github?
- 20. Нужно ли вручную устанавливать аутентификациюManager весной?
- 21. Нужно ли устанавливать драйверы для системы Windows7?
- 22. Зачем нам нужно устанавливать SONAR_RUNNER_OPTS?
- 23. Нужно ли устанавливать Silverlight в браузерах в будущем?
- 24. Нужно ли устанавливать Java для развертывания приложения в Tomcat?
- 25. Нужно ли устанавливать переменную экземпляра в методе контроллера ресурсов `# create`?
- 26. Нужно ли устанавливать код createUser в методе метеор?
- 27. Нужно ли устанавливать GoogleTest в каждый из моих проектов?
- 28. Режим Windows XP в Win 7 - Нужно ли устанавливать антивирус?
- 29. Нужно ли устанавливать значения в переменную два раза?
- 30. Нужно ли устанавливать значение внешнего ключа в JPA?
Проверить это также http://stackoverflow.com/questions/265875/default-string-initialization-null-or-empty –
мне нужен какой-то способ, чтобы разорвать связь между Jerod и jean27. – CJ7
принять ответ Джерода, он ответил первым ... – Hinek