我有一个验证数据的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子句周围抛出括号,但它不起作用。
如果对象什么都没有,然后测试它的属性,是否有优雅的测试?
答案 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
}