首页 > 解决方案 > 为 For Each 循环中的 Nothing 异常编码

问题描述

在下面显示的第一个代码示例(如注释中所指出的那样)中,我收到“对象引用未设置为对象的实例”异常,因为 PeopleContacts 集合中的一个名称是“Nothing”。

最初,我尝试编写“无”检查(仍在下面的代码中),但它是在引发异常的行中编码的,所以来不及提供帮助。

然后我重新编写了代码,如下面的第二个示例所示,虽然它有效,但我不喜欢它。我宁愿使用 For Each 构造,因为我发现它更易于维护。

有没有办法对此进行编码,使其可以使用 For Each 构造?

代码在 vb.net

 Dim Counter As Integer = 0
 Dim AllNames As String = String.Empty

第一个示例(如下)引发异常 - 对象引用未设置为对象的实例。

For Each individual As Person In PeopleContacts
  For Each indName As Name In individual.Names  ' <<< exception thrown here
      If indName IsNot Nothing Then
         Counter += 1
         AllNames &= Counter.ToString & ": " & indName.DisplayName & vbCrLf             
      End If
   Next
 Next

第二个示例有效:

For x As Integer = 0 To PeopleContacts.Count - 1
    If PeopleContacts.Item(x).Names IsNot Nothing Then
       For y As Integer = 0 To PeopleContacts.Item(x).Names.Count - 1
           Counter += 1
           AllNames &= Counter.ToString & ": " & PeopleContacts.Item(x).Names(y).DisplayName & vbCrLf              
        Next
    End If
Next

标签: .netvb.net

解决方案


推荐阅读