VB检查结构的值

I'm*_*ats 3 vb.net if-statement data-structures

我有两个结构,有时一个结构填充用户的数据或有时两者.我需要检查整个结构,看它是否有数据输入.如果我甚至可以检查一个变量以查看它是否为空或为空(我在下面所做的),我也会好的.当代码运行时,无论结构是否有数据,都始终禁用btnTurn.Enabled.这可能是我的布尔值的问题吗?

结构

 Public Structure StructSurvData
            Friend szTBMNum As String
            Friend dblTBMElev1 As Double
            Friend dblTBMElev2 As Double
            Friend dblTBMElev3 As Double
            Friend dblBACKSIGHT1 As Double
            Friend dblBACKSIGHT2 As Double
            Friend dblBACKSIGHT3 As Double
            Friend dblFORESIGHT1 As Double
            Friend dblFORESIGHT2 As Double
            Friend dblFORESIGHT3 As Double
            Friend szNewMPEDescr As String
            Friend szDataComm As String

        End Structure

        Public Structure StructSurvData2
            Friend szTBMNum2 As String
            Friend dblTBMElev4 As Double
            Friend dblTBMElev5 As Double
            Friend dblTBMElev6 As Double
            Friend dblBACKSIGHT4 As Double
            Friend dblBACKSIGHT5 As Double
            Friend dblBACKSIGHT6 As Double
            Friend dblFORESIGHT4 As Double
            Friend dblFORESIGHT5 As Double
            Friend dblFORESIGHT6 As Double
            Friend szNewMPEDescr2 As String
            Friend szDataComm2 As String
        End Structure
Run Code Online (Sandbox Code Playgroud)

如果别的

 If structSD2.szTBMNum2 = Nothing Then
                btnTurn.Enabled = False
            ElseIf structSD2.szTBMNum2 <> Nothing Then
                btnTurn.Enabled = True
            End If
Run Code Online (Sandbox Code Playgroud)

Flo*_*iwi 5

你应该总是使用is nothing替代=nothingisnot nothing取代<> nothing

        If structSD2.szTBMNum2 is Nothing Then
            btnTurn.Enabled = False
        ElseIf structSD2.szTBMNum2 isnot Nothing Then
            btnTurn.Enabled = True
        End If
Run Code Online (Sandbox Code Playgroud)

甚至更好,因为@zaggler建议:

        btnTurn.Enabled = structSD2.szTBMNum2 Is Nothing
Run Code Online (Sandbox Code Playgroud)

  • `btnTurn.Enabled = structSD2.szTBMNum2没什么`在你的眼睛上更容易...... (3认同)
  • 是的,不要写这样的代码 - 这是一种反模式. (2认同)