首页 > 解决方案 > 在 VB.Net 中返回空引用

问题描述

我的程序中有以下方法:

Public Function AddHandlerTo(ByVal compName As String) As System.Object
    For Each item In componentList
        If item.Name.Equals(compName) Then
            AddHandlerTo = item
        End If
    Next
End Function

正如预期的那样,由于我的Return语句是嵌套的,我在编译器中收到了警告:

函数“AddHandler”不会在所有代码路径上返回值。使用结果时,可能会在运行时发生空引用异常。

现在这个方法的目的是帮助我(正如方法名称所说)将处理程序添加到不容易访问的特定对象。本质上,其中的每item一个componentList都是同一个父对象的不同子对象。无论如何,我在这里的问题并不重要。

我试图弄清楚如何Return在方法的末尾添加一个最终语句,以便我不再收到错误。如果循环中没有与条件匹配的对象,我希望它返回一个异常,即不存在对象或类似的东西。虽然我不知道如何准确地做到这一点,而且我通过谷歌寻求帮助的能力显然是可怕的。

标签: vb.net

解决方案


我通常总是使用这样的 return 语句:

Public Function AddHandlerTo(ByVal compName As String) As System.Object
  Dim result As Object = Nothing
  For Each item In componentList
    If item.Name.Equals(compName) Then
        result = item
    End If
  Next
  Return result
End Function

或者

Public Function AddHandlerTo(ByVal compName As String) As System.Object
  For Each item In componentList
    If item.Name.Equals(compName) Then
        Return item
    End If
  Next
  Return Nothing
End Function

无论你在哪里调用这个函数,你都会检查它是否返回了一些东西或什么也没有。


推荐阅读