.net - 为 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
解决方案
推荐阅读
- android - 我需要在颤振中按字母顺序排列数据库选择查询
- reactjs - 在 NextJS 中使用动态路由时,错误的路由返回状态 200
- python - 如何从我的 Localhost Web 服务器搜索和下载 Python 文件?
- javascript - 使用删除按钮删除映射元素中的当前待办事项
- 不工作
- java - 为什么问号在 %% 内不起作用?
- mysql - Mysql 将另一个表添加到 Join
- javascript - 通过删除具有重复属性值的相邻对象来过滤数组
- javascript - 脚本块js
- javascript - 如何在 javascript 中添加两个样式元素?
- windows - 将 powershell 脚本提升为以管理员身份运行时,为什么 read-host 在提示用户之前接受键盘输入?