在VB.net中停用函数的返回值赋值

时间:2016-01-13 13:18:13

标签: vb.net function

有没有办法停用IDE的以下行为? 这非常愚蠢,你不会立刻看到这个错误。 Hopy我在编码中的评论解释得很好。

当你看到两行都返回不同的东西时:

有缺陷的行(返回“false”,因为它解决了我所在函数的返回值)

If HasIpAddress Then

正确行(使用其他签名处理该函数):

If HasIpAddress() Then

编码:

Public Shared Function HasIpAddress(ByVal p_WaitTimeInSeconds As Integer) As Boolean

    Dim dEnd As Date = Date.Now.AddSeconds(p_WaitTimeInSeconds)

    While dEnd > Date.Now

        If HasIpAddress Then ' THIS is the faulty line. 
        ' If HasIpAddress() Then ' THIS line would work, because of the "()"
        ' it addresses the function without parameters and not 
        ' the return-value of the current function I am in.
            Return True
        End If

        System.Threading.Thread.Sleep(100)

    End While

    Return False

End Function

Public Shared Function HasIpAddress() As Boolean

     With System.Net.IPAddress.Parse(NetworkTools.GetMyIpAddress())
           ...Check for Loopbacks, Any, None etc...
     End While

     Return True

End Function

1 个答案:

答案 0 :(得分:3)

您无法更改此行为,它是该语言的不可配置部分(与Option Strict不同)。因此除了训练自己总是()置于函数调用之后,即使函数没有参数,并且希望肌肉记忆会在某些方面发挥作用,也没有一般的方法可以避免这种陷阱。点。