如何初始化My.Settings中的StringCollection以避免空引用异常
解决方法
你可以通过以下两种方案处理首次使用时StringCollection为空的问题:
方案1:操作前即时判空初始化
在每次调用集合方法前先判断是否为空,为空则先实例化:
' 先判空初始化 If My.Settings.MyCollection Is Nothing Then My.Settings.MyCollection = New System.Collections.Specialized.StringCollection() End If ' 执行添加操作 My.Settings.MyCollection.Add(myString) ' 持久化修改到配置文件 My.Settings.Save()
该方案适合仅在少数位置使用该集合的场景,无需额外配置全局逻辑。
方案2:程序启动时统一初始化
如果项目中多处会用到这个集合,可以在程序启动入口统一做一次初始化,避免重复写判空逻辑。以VB.NET为例,你可以在My.Application.Startup事件中添加如下代码:
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup If My.Settings.MyCollection Is Nothing Then My.Settings.MyCollection = New System.Collections.Specialized.StringCollection() My.Settings.Save() End If End Sub
完成初始化后,程序任意位置都可以直接调用My.Settings.MyCollection.Add(myString),不需要再单独判空。
注意事项
- 所有对Settings的修改完成后都需要调用
My.Settings.Save(),否则修改仅会保留在内存中,程序重启后会丢失。 - 你已经将目标框架调整为.NET Framework 4.6,无需额外处理版本兼容问题。
内容的提问来源于stack exchange,提问作者user16594857
相关产品推荐
相关产品推荐

