Какова цель пустой строки?

Мне, как разработчик и как пользователь, я нахожу пустую строку ("") бесполезной и причина большого количества беспорядка, это похоже на строку высказывания == символ []

Возможно, компьютерам нужна пустая строка, таким образом, я хотел бы учиться почему.

См. также:

10
задан Community 23 May 2017 в 12:20
поделиться

8 ответов

Можно утверждать, что пустая строка является экземпляром шаблона Null Object Pattern . Как заметил Энтони, это используется, чтобы избежать особых случаев и большого количества if s.

6
ответ дан 3 December 2019 в 13:16
поделиться

Иногда вам нужно строковое значение, которое не равно нулю, если оно не заполнено. В противном случае для любой задачи, связанной со строкой, которую вам нужно выполнить, вы должны включить нулевую проверку, которая просто служит для раздувания вашего кода.

И просто для того, чтобы это было записано, в C # рекомендуется указывать string.Empty вместо жесткого кодирования в "".

Edit: И, как указал Л.Бушкин, есть разница между пустым значением и неизвестным значением.

9
ответ дан 3 December 2019 в 13:16
поделиться

Он служит той же цели для строк, что и число «ноль» для целых чисел. Если бы у вас не было нуля, вы не могли бы записать количество овец, которое у вас есть, когда у вас нет овец. Точно так же, если у вас нет пустой строки, вы не можете записать последовательность символов, которые у вас есть, когда у вас нет никаких символов.

Применяются всевозможные аналогичные алгебраические законы: поскольку X + 0 то же самое, что X, Y cat "" то же самое, что Y, и т. Д.

Давайте поговорим о подстроках. Если у меня есть строка «abc», , то

substring("abc",1,3)  is  "abc"
substring("abc",1,2)  is  "ab"
substring("abc",1,1)  is  "a"
substring("abc",1,0)  is ...?

Другой интересный случай:

substring("abc",1,3) is "abc"
substring("abc",2,2) is "bc"
substring("abc",3,1) is "c"
substring("abc",4,0) is ...?

Многие языки программирования ошибаются в этом последнем случае, потому что разработчик не считал пустую строку интересной.

2
ответ дан 3 December 2019 в 13:16
поделиться

Зачем нам нужен ноль? Это действительно тот же вопрос. Что такое «пижама» без всяких «а»? "пджм". Что такое «а» без всех «а»? "". Просто как тот. Результатом некоторых строковых операций является строка без каких-либо символов, и это пустая строка. Она ведет себя так же, как и любая другая строка - вы легко можете определить ее длину; вы можете объединить его с другими строками, вы можете подсчитать в нем «а» и т. д.

11
ответ дан 3 December 2019 в 13:16
поделиться

зачем нам ксерокопия? или пустой массив, пустой набор (также называемый нулевым набором). Почему мы вообще заботимся о вещах, когда их нет?

Некоторые вещи просто более интересны, когда их нет.

Что-то не может быть выражено, если мы не можем выразить ценность ничего (что очень отличается от " unknown value "of null

например

string allUpperCaseLetters = "";
for(byte i = 'A';i<'Z';i++)
{
  allUpperCaseLetters += (char)i;
}

, если вы скажете unknow plus (char) i, результат все равно будет неизвестен, однако" "+ 'A' будет" A ". Насколько велик 1 + unknown? когда добавление может обернуть вокруг, вы даже не можете заявить, что 1 + A больше, чем A (если A неизвестно)

некоторые операции были бы очень странными, если бы у нас не было "" как насчет

string letters = allUpperCaseLetters;
for(;i>0;)
{
  int i = letters.Length
  Console.WriteLine(letters[0]);
  letters = letters.Substring(1);
}

, зачем вам первый внутри цикла, чтобы создать исключение NullReferenceException, а не завершение цикла, когда больше нет букв?

1
ответ дан 3 December 2019 в 13:16
поделиться

Если из функции возвращается пустая строка, это означает, что функция выполнила свое предназначение, и результатом была пустая строка. Если функции не удалось построить строку, она может вернуть значение null (в зависимости от контракта функции - может возникнуть исключение). В этом случае нулевая и пустая строка имеют разные значения.

Обратной стороной являются параметры функции - если строковый параметр является необязательным, вам необходимо выполнить проверку на null (именно здесь он обычно связан с проверкой emptyString ()).

0
ответ дан 3 December 2019 в 13:16
поделиться

Пустые строки довольно часто встречаются в реальных ситуациях, и их полезно отличать от нуля.

  • Нулевое значение означает, что значение не определено или неизвестно.

  • Пустая строка означает, что она заведомо пуста.

Это может показаться сексом, но есть разница. Пустые строки - это экземпляры объекта, нули - нет. Вы можете манипулировать пустой строкой, используя любой из допустимых методов, которые могут быть вызваны для строкового объекта. Вы не можете манипулировать нулевым значением. Пустые строки часто являются результатом определенных манипуляций с другими строками, например:

var source = "Hello";
var result = source.Remove("Hello");  // result is now: ""

Вот простой пример, где сказанное выше имеет значение: приложение с формой, которая собирает отчество человека через текстовое поле.Должно ли значение текстового поля быть нулевым или пустой строкой? Гораздо проще всегда иметь текстовое поле, возвращающее пустую строку в качестве своего значения (когда оно пусто), чем пытаться различать ноль и "".

Интересно, что некоторые базы данных НЕ различают NULL и пустую строку , лучшим примером которой является Oracle. В Oracle:

INSERT into MYTABLE(name) VALUES('')

фактически вставляет NULL в таблицу. Фактически это может создать запутанные ситуации при написании кода, который управляет данными из базы данных в .NET - иногда вы получаете DBNull.Value там, где вы ожидали String .

31
ответ дан 3 December 2019 в 13:16
поделиться

Я не слышал, чтобы на это жаловались раньше. В то время как null - это специальное значение, которое может быть значением любого объекта, а пустая строка - это String. Аналогию можно провести и между null и пустым List или массивом.

0
ответ дан 3 December 2019 в 13:16
поделиться