优先考虑IF语句部分

时间:2009-10-08 13:50:18

标签: .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()

我想检查一下是否先没有,因为如果我这样写,它会抛出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 个答案:

答案 0 :(得分: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()

应该做你想做的事。

答案 1 :(得分:4)

你可以使用:

if (string.IsNullOrEmpty(s))
{
//do work
}