Ничто = Строка. Пустой (Почему они равны?)

Почему делает первое, если оператор оценивает к истинному? Я знаю, использую ли я "," вместо "=" затем, это не оценит к истинному. Если я заменяю Строку. Пустой с "Нечто" это не оценивает к истинному. Обе Строки. Пустой и "Нечто" имеют тот же тип Строки, итак, почему каждый оценивает к истинному, и другой не делает?

    //this evaluates to true
    If Nothing = String.Empty Then

    End If

    //this evaluates to false
    If Nothing = "Foo" Then

    End If
25
задан Justin Helgerson 13 April 2010 в 21:31
поделиться

2 ответа

Ничто в VB.net не является значением по умолчанию для типа. Спецификация языка говорит в разделе 2.4.7:

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

Итак, когда вы проверяете String.Empty, Nothing преобразуется в строку, имеющую длину 0. Для проверки на Nothing следует использовать оператор Is, и String.Empty.Equals (Nothing) также вернет false. .

19
ответ дан 28 November 2019 в 21:34
поделиться

Попробуйте следующее:

Console.WriteLine("Is String.Empty equal to Nothing?: {0}", String.Empty.Equals(Nothing))

Оператор = не применяет одинаковые типы, тогда как .Equals () строкового объекта, как и оператор Is .

2
ответ дан 28 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: