【问题标题】:How to use IsNullOrEmpty in VB.NET?如何在 VB.NET 中使用 IsNullOrEmpty?
【发布时间】:2012-10-30 07:34:11
【问题描述】:

为什么下面的内容在 VB.NET 中不能编译?

Dim strTest As String
If (strTest.IsNullOrEmpty) Then
   MessageBox.Show("NULL OR EMPTY")
End if

【问题讨论】:

  • 编译器说:Argument not specified for parameter 'value' of 'Public Shared Function IsNullOrEmpty(value As String) As Boolean'.,所以你可以猜到是因为你没有为那个方法的参数value指定一个参数。我想说的是(大多数时候)编译器会告诉你代码有什么问题。

标签: .net vb.net string isnullorempty


【解决方案1】:

IsNullOrEmpty 是“共享的”,所以你应该这样使用它:

If String.IsNullOrEmpty(strTest) Then

【讨论】:

    【解决方案2】:

    你实际上可以只比较一个空字符串:

    If strTest = "" Then
        MessageBox.Show("NULL OR EMPTY")
    End If
    

    【讨论】:

    • 如果strTestnothing 怎么办? IsNullOrEmpty 明确包含检查 strTest 是否为 nothing。您的声明没有检查这一点。
    • 实际上确实如此,在 VB 中,字符串与空字符串的比较对于 Nothing 也会返回 true。不信就试试看。或者也许这会让你信服:stackoverflow.com/questions/2633166/…
    • +1 @ThorstenDittmar,Rolf 是对的。 VB.Net 在进行字符串比较时(以及在其他地方)将Nothing 视为相同的""
    • @MarkJ:对不起,不知道。试图撤消我的反对票,但除非编辑答案,否则不会让我...?
    【解决方案3】:

    String.IsNullOrEmpty 是一个共享(或 C# 中的静态)方法。

    Dim strTest As String
    If (String.IsNullOrEmpty(strTest)) Then
       MessageBox.Show("NULL OR EMPTY")
    End if
    

    【讨论】:

    • 当我这样做时,它说 NullPointerException 可能会在运行时引发。
    • @CJ7 因为你使用strTest 没有设置值(这可能是一个错误),所以它总是Nothing。您可以使用Dim strTest As String = Nothing 来解决它,例如将其显式设置为Nothing
    • @Mr.Steak:这似乎有点奇怪,因为如果我不将它设置为任何东西,它无论如何都会是Nothing。为什么我必须明确地将其设置为 Nothing - 没有任何意义!
    • @CJ7 是的,无论如何它都会是Nothing,但是由于您没有明确告诉编译器,它只是警告您它可能是一个错误您的代码(因此这只是一个警告,而不是错误)。请注意,您可以禁用这些警告,但我不建议这样做。
    猜你喜欢
    • 2018-10-25
    • 2014-01-31
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多