所以,我写了一些VB.NET代码。有点像这样:
Public Function foo() As Object
Select(someInt)
Case 1
Case 2
Case 3
return doStuff()
Case Else
Throw New ArgumentException("Can't supply that argument to this method.")
End Select
End Function
这是很好的代码。如果有人将无效参数传递给使用此代码段的方法,它会告诉他们确切的错误位置和原因,他们可以立即修复它。但是......它“不会在每个代码路径上返回一个值。”我怎么能抑制这个警告?
我想在其他方法上提供此警告,但不在此处。
答案 0 :(得分:5)
VB.NET不像C#那样使用switch
语句。你不能只是把案件堆叠在一起并且已经失败了。没有堕落。相反,您必须在每种情况下都使用回车,或使用逗号表示法:
Public Function foo() As Object
Dim someInt As Integer = 0
Select Case (someInt)
Case 1
Return 0
Case 2
Return 0
Case 3
Return 0
Case Else
Throw New ArgumentException("Can't supply that argument to this method.")
End Select
End Function
或者
Public Function foo() As Object
Dim someInt As Integer = 0
Select Case (someInt)
Case 1, 2, 3
Return 0
Case Else
Throw New ArgumentException("Can't supply that argument to this method.")
End Select
End Function
答案 1 :(得分:0)
此错误消息表明这是在Function
内,是否正确?
您需要在doStuff()
之后返回一个值,所以类似于以下内容(假设您的函数返回Integer
):
Select(someInt)
Case 1
Case 2
Case 3
doStuff()
Return 0
Case Else
Throw New ArgumentException("Can't supply that argument to this method.")
End Select
如果这不能回答您的问题,如果您与我们分享您的整个职能部门,这可能有所帮助。
答案 2 :(得分:-1)
您的代码位于函数内部。
Public Function NameHere(ByVal someInt as Integer) as Object
您需要返回一些值:
NameHere = "SomeValue"
也许你忘记了这一点。其他解决方案是将Function更改为Sub并且不需要返回值。
修改强>
也许你想通过引用发送参数:
Public Sub foo(ByRef someStuff as String) As Object
Select(someInt)
Case 1
Case 2
Case 3
someStuff = doStuff()
Case Else
Throw New ArgumentException("Can't supply that argument to this method.")
End Select
End Sub
这可以避免你的警告