Приоритетная часть заявления IF - PullRequest
0 голосов
/ 08 октября 2009

У меня есть оператор IF, который проверяет данные.

В основном выглядит так:

Dim s As String = Nothing

If s Is Nothing Or s.Length = 0 Then
    Console.WriteLine("Please enter a value")
End If

Console.Read()

Я бы хотел проверить, нет ли вначале ничего, потому что, если я напишу это так, оно выдаст исключение NullReferenceException.

Я думал переписать это так:

If s Is Nothing Then
    Console.WriteLine("Please enter a value")
ElseIf s.Length = 0 Then
    Console.WriteLine("Please enter a value")
End If

Но если я сделаю это, у меня будет одно и то же сообщение об ошибке дважды, и я считаю, что не совсем ясно, каково мое намерение.

Я также пытался поставить скобки вокруг предложения s Is Nothing, но это не сработало.

Есть ли элегантный способ проверить, является ли объект ничем, а затем проверить его свойство?

Ответы [ 2 ]

7 голосов
/ 08 октября 2009

.NET 2.0 ввел ключевое слово OrElse для короткого замыкания. Это означает, что он не будет оценивать правую сторону OrElse, если левая сторона верна. Кроме этого, он работает точно так же, как Or.

Эквивалент And равен AndAlso, который не оценивает правую сторону, если левая сторона ложна.

Dim s As String = Nothing

If s Is Nothing OrElse s.Length = 0 Then
    Console.WriteLine("Please enter a value")
End If

Console.Read()

должен делать то, что вы хотите.

4 голосов
/ 08 октября 2009

вы можете использовать:

if (string.IsNullOrEmpty(s))
{
//do work
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...