gpt4 book ai didi

c# - 如何判断DataTable是否为null,未初始化

转载 作者:行者123 更新时间:2023-11-30 14:23:57 26 4
gpt4 key购买 nike

我有一个方法可以在 DataTable 上做一些工作,例如

private void MyMethod(DataTable table)
{
if(table.Rows.Count > 0)
{
// do some work
}
}

但是,如果该方法从它所服务的应用程序接收到空数据表,我会收到“对象引用未设置为对象实例”错误。

我也试过了。 . .

if(table.IsInitialized) { }

if(table != null) {  }

但我收到相同的错误消息。

请问如何测试传入的数据表是否已实例化且不为空?

DataTable 来自 WinForms 应用程序中的数据网格,即

DataTable table = (DataTable)datagridview.DataSource;

所以如果原来的datagridview是空的,就会出现这个问题。

最佳答案

如果你遇到这样的情况,你会得到“引用未设置到对象的实例”异常:

object someObject = null;
//Throws an exception. You try to call a instance function without specify the instance
someObject.ToString();

因此要么表为空,要么行返回空。在 C# 6.0 之前你必须走艰难的路:

if(table != null && table.Rows != null && table.Rows.Count > 0)

我假设计数不是可为空的整数。如果是,您当然也必须检查它是否为空。

至少为了调试,您可能希望使用“每行一个操作”规则编写更详细的代码。这将帮助您找到哪个操作恰好返回 null。而且 JiT 很可能会在调试运行之外删除临时变量。

//If table is null, exception here
var Row = table.Row;
//If Row is null, Exception here.
var Count = Row.Count;
//Nothing is null. Continue.
if(Count > 0);

在 C# 6.0 中,您可以使用新的 Null 条件运算符将其编写得更短一些: https://msdn.microsoft.com/en-us/library/dn986595.aspx然而,它仍然是相同的代码。

关于c# - 如何判断DataTable是否为null,未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com