当向 DataTable 添加 DataColumn 时,对象引用未设置为对象的实例

4

当我尝试在DataTable中添加新列时,我遇到了“对象引用未设置为对象实例”的问题。以下是我的代码:

DataColumn clUniqueID = new DataColumn();

clUniqueID.Caption = "UniqueID";
clUniqueID.ColumnName = "UniqueID";
clUniqueID.DataType = typeof(int);
dtMain.Columns.Add(clUniqueID);

dtMain 是一个公共的 DataTable。我在我的 Windows 应用程序的表单加载时放置了这段代码,但当我尝试加载表单时,它会抛出错误。有什么想法吗?


2
请展示初始化dtMain的代码,并告诉我们它何时被执行。 - Daniel Hilgarth
你确定你初始化了dtMain吗? - Kirill Bestemyanov
1
你初始化了dtMain吗?仅有声明是不够的。 - Kamran Shahid
4个回答

6

您需要确保实际初始化dtMain:

DataTable dtMain; //datatable not initialized, it will be null

DataTable dtMain = new DataTable(); //initialized datatable

感谢大家的帮助。我忘记初始化我的数据表格了。 - firefalcon

1
另一种可能导致合并过程中出现空引用的情况是列名不同,即使只是大小写不同。

当两个表的主键仅在大小写方面有所不同时,您可能会遇到空引用异常。来源

这正是我的问题所在。两个数据表中主键的列名必须相同!


0
您需要像这样初始化您的DataTable:-
DataTable dtMain = new DataTable();

如果你已经像这样创建了它:-

DataTable dtMain;

那么它就是空对象。


0

我遇到了一个有点不同的问题,其中数值项不可用。

请考虑以下内容:

DataTable dtStatusDetails = new DataTable();
    dtStatusDetails.Columns.Add("D1", typeof(string));
    dtStatusDetails.Columns.Add("D2", typeof(string));
dtStatusDetails.Rows.Add(
    data1.Value.ToString(),
    data2.Value.ToString(),
);

这里的data1值为null,异常在第3行(在此情况下)显示相同的错误,添加行之前。 加入一个null('?')检查帮助了我。

如果有人忘记了null检查,这应该是有帮助的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接