0

我在表单中有一个共享变量。

Public Class FormHome
      Public Shared db_config As Dictionary(Of String, String)

当我尝试从另一个表单访问这个变量时,

FormHome.db_config.ContainsKey("m")

它在我的系统(Windows 7)中运行良好。但是我在 Windows XP(客户端系统)中恰好在该行中遇到对象引用错误(System.NullReferenceException)。

在这两个地方,应用程序都使用 .NET 4.0 框架(版本 - 4.0.30319.18034)。似乎很奇怪。是什么导致了这个错误?

4

1 回答 1

0

这段代码

Public Shared db_config As Dictionary(Of String, String)

声明请求类型的变量( db_config)。它不会创建该类型的对象。

在创建对象之前,db_config它仍然为 null,因此尝试访问它会导致NullReferenceException.

要创建对象,您需要使用New关键字。例如:

db_config = New Dictionary(Of String, String)()

您需要确保在第一次尝试访问变量的值之前创建此对象。因为您使用的是静态 ( Shared) 变量,所以在类的实例构造函数中执行此操作可能为时已晚。常规实例构造函数仅在您创建对象的实例时才会执行。

因此,我建议在对象的静态构造函数中进行。正如语言规范更详细地解释的那样,在访问该类的任何静态成员时,可以保证运行时已经执行了类的静态构造函数。

将以下代码添加到您的FormHome类中:

Shared Sub New()
    db_config = New Dictionary(Of String, String)()
End Sub
于 2013-04-07T11:13:10.290 回答