提问人: 提问时间:8/11/2021 更新时间:8/11/2021 访问量:453
从 My.Settings 初始化 StringCollection 以避免 null 引用异常
Initializing a StringCollection from My.Settings to avoid null reference exception
问:
我在 My.Settings 中指定了一个名为 MyCollection 的 System.Collections.Specialized.StringCollection,并且在第一次用于添加字符串时,会抛出空引用异常(即 MyCollection 为 Nothing)。
添加字符串的语法很简单:
My.Settings.MyCollection.Add(myString)
如果 StringCollection 在首次使用时为 null,如何从 My.Settings 初始化它?
有关于 .NET Framework 冲突和 My.Settings 中 StringCollections 的报告。因此,我在项目的应用程序设置中指定了 .NET Framework 4.6。
答:
1赞
David
8/11/2021
#1
您需要检查 StringCollection 是否使用条件语句:nothing
If (My.Settings.MyCollection Is Nothing) Then
My.Settings.MyCollection = New System.Collections.Specialized.StringCollection() ' you probably won't need to fully qualify this, but I have it for visibility
End If
My.Settings.MyCollection.Add(myString)
评论
0赞
8/11/2021
谢谢,但空性测试失败,因为集合未初始化。(在问这个问题之前,我试过这个)。您必须遵循 @Caius Jard 提供的程序。
0赞
Caius Jard
8/11/2021
#2
- 打开项目属性、设置,然后单击 3 点按钮以打开字符串集合编辑器。
- 添加单个字符串,然后单击“确定”
- 再次打开编辑器并删除您添加的字符串
现在,您的设置网格应如下所示:
取而代之的是:
在运行时,您的设置将是一个包含 0 个条目的集合,而不是一个 Nothing 集合,即当您尝试使用它时它不会崩溃
评论
0赞
8/11/2021
在回过头来寻找答案之前,我自己弄清楚了,并且确实这样做了,而且它奏效了。
1赞
Caius Jard
8/11/2021
我一直认为 Microsoft 将默认值设置为 Nothing 有点奇怪,因为它对用户来说不是很直观。也许他们认为它总是会充满至少一个设置。
0赞
8/12/2021
是的 - 这真的很奇怪。使用后列表不是 Nothing。我只是没有单击“设置”中的“项目”(按钮),然后添加一个空字符串。Dim myList As New List(Of String)
...
1赞
Caius Jard
8/12/2021
好吧,如果你说,列表什么都不是.但我明白你的意思 - 我永远看不到任何人添加字符串集合类型设置的用例,但它实际上不可用。Dim myList as List(Of String)
评论