优先考虑IF语句部分

Nat*_*oop 0 .net vb.net if-statement

我有一个验证数据的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()
Run Code Online (Sandbox Code Playgroud)

我想检查一下是否先没有,因为如果我这样写,它会抛出一个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
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我会得到两次相同的错误消息,我相信我的意图不太明确.

我也尝试在s Is Nothing子句周围抛出括号,但它不起作用.

如果对象什么都没有,然后测试它的属性,是否有优雅的测试?

Pow*_*ord 7

.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()
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事.