gpt4 book ai didi

vb.net - 函数不会在所有代码路径上返回值

转载 作者:行者123 更新时间:2023-12-01 15:13:55 26 4
gpt4 key购买 nike

我收到以下代码的警告:“函数不会在所有代码路径上返回值”:

Function Test() As Boolean

Dim X As Integer = 5

If X = 10 Then
Return True
End If

End Function

我明白我不会在所有代码路径中返回值,因为 If 语句需要 X = 10 才能访问 Return。但是由于创建函数时的默认值为 False,我希望在未满足条件时返回该值。所以实际上该函数确实会在所有代码路径上返回一个值。

我认为依赖函数的默认值是一种不好的做法,特别是因为创建函数首先要返回一个值。有人可以阐明这个话题并帮助解决我的困惑吗?

我可以通过将代码更改为以下方式来删除警告:

Function Test() As Boolean

Dim X As Integer = 5

If X = 10 Then
Return True
Else
Return False
End If

End Function

或者

Function Test() As Boolean

Dim X As Integer = 5

Return (X = 10)

End Function

最佳答案

since the default value when creating a function is False, i expect that to be returned when the criteria isn't filled

不,这是错误的期望。 .NET 不这样做的原因很明显:这是一种防止您犯粗心错误的方法。通常您只是忽略了您的代码路径不返回值,因此如果该方法假设您想要返回 False 那么它会隐藏一个错误。

所以它强制你自己提供返回值。

在 VB.NET 中,您还可以使用 Exit Function,然后返回该类型的默认值。

MSDN :

If you use Exit Function without assigning a value to name, the procedure returns the default value for the data type that's specified in returntype. If returntype isn't specified, the procedure returns Nothing, which is the default value for Object.

但在我看来这是不好的做法,只有这样才能向下兼容 VB6。

还有另一种退出函数而不返回任何东西的方法:如果你抛出异常。

所以警告是一种告诉你应该重新考虑你的逻辑的方式,它只是提醒你你可能忘记了一个案例。最后的 Return something 无论如何都不会伤害你:

Function Test() As Boolean
Dim X As Integer = 5

If X = 10 Then Return True

Return False
End Function

关于vb.net - 函数不会在所有代码路径上返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com