Есть ли что-то в C #, что является противоположностью IsNullOrEmpty - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно найти что-то, противоположное IsNullOrEmpty?

Вот текстовая строка.

{
    while (string.IsNullOrEmpty(TextBox.Text))
}

Что противоположно этому?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

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

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

0 голосов
/ 11 октября 2018
{

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

}
...