Function '<不在所有代码路径上返回值.是你,唱着'Return'声明吗?<



考虑:

Private Function isAvailableQuantity() As Boolean
Try
sqL = "SELECT StocksOnHand FROM ITEM WHERE ItemNo = " & Val(txtSearch.Text) & ""
ConnDB()
cmd = New OleDbCommand(sqL, conn)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)

If dr.Read = True Then
If Val(txtQuantity.Text) <= dr(0) Then
isAvailableQuantity = True
Else
MsgBox("Insuficient stocks", MsgBoxStyle.Critical, "Validate Stocks")
txtSearch.Clear()
End If
End If
Catch ex As Exception
MsgBox(ex.Message)

Finally
cmd.Dispose()
conn.Close()
End Try
End Function
我不知道该怎么办。旧版本的visual studio不会得到这个错误。我现在使用的是vs 2022,它似乎有一个错误,相反vs 2010没有

在VB中。NET中,Function是返回值的方法,而Sub是不返回值的方法。如果你的方法不需要返回任何东西,使用Sub,例如

Private Sub DoSomething()
'Do some stuff here.
End Sub

如果您确实使用Function,那么有两种方法可以返回值。不好的方法是将值赋给以方法命名的隐式局部变量,例如

Private Function DoSomething() As Boolean
'Do some stuff here.
DoSomething = True
End Function

这种方式基本上只存在于支持升级的VB6代码。如果你的老师向你展示,那么他们显然是一个没有真正学习过VB的老VB6开发人员。网络正常。返回值的好方法是使用显式的Return语句,例如

Private Function DoSomething() As Boolean
'Do some stuff here.
Return True
End Function

如果在代码中有多条执行路径,则需要确保在所有路径上都返回一个值。作为一个例子,下面的代码不会这样做:

Private Function DoSomething() As Boolean
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
Return True
End If
End Function

将在星期一返回True,但在其他日子不返回任何内容。在这个特定的情况下,一种修复方法是:

Private Function DoSomething() As Boolean
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
Return True
End If
Return False
End Function

如果你想用错误的方式返回一个值,并且你想在除了一个代码路径之外的所有代码路径上返回一个特定的值,那么逻辑上要做的事情是将开始处的返回值设置为默认值,然后只在那一处更改它,例如

Private Function DoSomething() As Boolean
DoSomething = False
If Date.Now.DayOfWeek = DayOfWeek.Monday Then
DoSomething = True
End If
End Function

对于您的场景,最后一个例子是最简单的(尽管不是最好的)修复。

相关内容

最新更新