Почему строка NULL отличается от строки ""? - PullRequest
0 голосов
/ 03 ноября 2011

В чем разница между следующими способами кодирования:

if (String::IsNullOrEmpty(TextBox1->Text)) 

и

if (TextBox1->Text == "") 

Ответы [ 8 ]

9 голосов
/ 03 ноября 2011

Первый проверяет также null.

Свойство TextBox-> Text никогда не будет нулевым, но учтите (C #):

string s1 = null;
string s2 = "";

string.IsNullOrEmpty(s1)    // true
string.IsNullOrEmpty(s2)    // true

s1 == ""    // false
s2 == ""    // true

Функция IsNullOrEmpty() - это просто полезный помощник для одновременной проверки 2 (ошибки) условий.,

Таким образом, ваш заголовок слегка отключен, это почти пустой и нулевой.Потому что:

string.Empty == ""     // true

Строка - это объект.s1 и s2 - это не строки, а ссылки (указатели) на строки.null - это специальное справочное значение, означающее «не указывающий на объект».Пустая строка является допустимым строковым объектом с длиной = 0

2 голосов
/ 03 ноября 2011

Основным отличием является то, что String :: IsNullOrEmpty () также проверяет строковую переменную на нулевое значение.например, оба этих метода вернули бы true:

public bool TestString(string theString){
  return String::IsNullOrEmpty(theString);
}

string emptyString; //currently a null object
TestString(emptyString); //returns true
emptyString = "";
TestString(emptyString); //also returns true
1 голос
/ 03 ноября 2011

Первая строка «if (IsNullOrEmpty (TextBox1-> Text))» может быть написана так:

if (TextBox1->Text== null || TextBox1->Text == "")

Второе утверждение - это задание (а не сравнение). Вы делаете «x = значение»; Но если вы сделали опечатку, это означает, что вы не проверяете на ноль (по сравнению с первым утверждением.

1 голос
/ 03 ноября 2011

Первый оператор возвращает true, если строка равна нулю, или пустой, второй - только если строка пуста, поэтому первый оператор может быть переведен в:

if(TextBox1->Text == null ) || TextBox1->Text == "") 
1 голос
/ 03 ноября 2011

Первый проверяет любой из них:

string x = null //x is null, unassigned
string x = "" //x is a string, but with nothing in it.

Второй проверяет только, если

x == ""
1 голос
/ 03 ноября 2011

Второй оператор является присваиванием, а не оператором равенства.

Похоже, вы запутали = и == (кстати, самый распространенный источник ошибок в C ++).

Thomas

1 голос
/ 03 ноября 2011

IsNullorEmpty вернет true, если строка null.Кроме этого они точно такие же.

1 голос
/ 03 ноября 2011

TextBox1->Text="" является назначением.Вы намеревались написать TextBox1->Text=="".

String::IsNullOrEmpty() test true для null или пустой строки, как указывает ее имя.Как это бывает, для вашего примера, TextBox1->Text никогда не будет оцениваться в null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...