Есть ли что-то в C#, что является противоположностью IsNullOrEmpty
Мне нужно найти что-то противоположное IsNullOrEmpty
?
Вот текстовая строка.
{
while (string.IsNullOrEmpty(TextBox.Text))
}
Что противоположно этому?
2 ответа
В контексте элемента управления Winforms TextBox вам не нужно тестировать .Text
собственность для null
совсем. К сожалению, я не могу найти документацию по этому вопросу, и я боюсь, что это было жертвой перемещения mdsn => docs, но я проверил это в Visual Studio.
Вы тоже можете это проверить; попытайся. Сделайте простой проект с текстовым полем и установите его Text
в null
в коде. Затем проверьте отладчик, и вы увидите, что он на самом деле установил пустую строку. Элемент управления TextBox очень удобен, как и большинство других стандартных элементов управления Winforms.
Имея это в виду, противоположность этого кода:
while (string.IsNullOrEmpty(TextBox.Text))
можно сократить до этого:
while (TextBox.Text != "")
хотя вы можете также рассмотреть пробелы, которые будут одной из этих двух строк:
while (TextBox.Text.Trim() != "")
while (!string.IsNullOrWhitespace(TextBox.Text))
Но теперь мне нужно поднять еще один момент: ни один из этих вариантов не делает Invoke
на элементе управления, это означает, что он должен выполняться в потоке пользовательского интерфейса. Это очень плохо, чтобы запустить while()
Цикл, как это в вашем потоке пользовательского интерфейса. Вы рассчитываете на то, что пользователь прервет цикл, но в то же время вы заблокировали весь пользовательский интерфейс, где программе будет трудно даже обработать ввод, который в конечном итоге разблокирует его.
Вместо этого вам нужно обработать событие нажатия клавиши или проверить текстовое поле в точке, где пользователь пытается инициировать действие в зависимости от значения текстового поля, или переместить его в другой поток.