Есть ли что-то в 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() Цикл, как это в вашем потоке пользовательского интерфейса. Вы рассчитываете на то, что пользователь прервет цикл, но в то же время вы заблокировали весь пользовательский интерфейс, где программе будет трудно даже обработать ввод, который в конечном итоге разблокирует его.

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

{

    while (!string.IsNullOrEmpty(TextBox.Text))

}
Другие вопросы по тегам