0

Microsoft 何时开始强制使用“新建”语句初始化数据集?我的公司有一个多年前启动的网站,并且很多数据集都用如下声明声明

Dim someDataset as Dataset = Nothing

此代码已经运行了很长时间,但我们最近开始收到错误消息,指出值不能为空。参数名称:数据集。

我已尽力更新这个旧代码,但我不知道我们正在使用的库有任何更新,我试图确定是什么触发了这个错误。谢谢

我想强调的是,在错误开始发生之前没有对代码进行任何更改,这听起来不太可能。这是一个大型应用程序,数据集以多种方式在其中使用。在最近开始出现此错误之前,它已投入生产多年并按预期工作。

4

2 回答 2

1

自 .NET 第 1 天以来,这种情况一直没有改变。所有引用类型都必须在New某处使用语句创建,否则它们将保持为空引用 ( Nothing)。

听起来,用于创建数据集的应用程序的其他部分已被删除或更改,因此有时会返回Nothing.

于 2013-08-26T18:00:58.623 回答
0

声明和实例化是有区别的。

这一行声明了一个DataSet

Dim myDataSet As DataSet

注意:由于您只声明了一个DataSet对象,因此它没有设置为实例,因此它是Nothing.

此行实例化 a DataSet

myDataSet = New DataSet()

通常你会看到这些行放在一起,如下所示:

Dim myDataSet = New DataSet()

如果您只声明 a DataSet,那么您必须确保Nothing在使用它之前检查它是否存在,如下所示:

If myDataSet Is Not Nothing Then
    ' Use myDataSet because there is an instance of it
End If

注意:您应该始终检查 a 的返回类型是否FunctionNothing

于 2013-08-26T18:22:54.453 回答