在 c# 中编写带有返回值的 null 引用的更好方法



有没有更好的方法来编写这个空检查?我正在检查DataSet表中的空值。

if (dataSet == null || dataSet.Tables == null || dataSet.Tables[0].Rows == null)
{
Console.WriteLine($"Error at {nameof(dataSet)}");
return vatPeriodList;
}

我在 ADO.NET 工作。

你的支票没有意义,也忘记了一个重要的。

  • DataSet.Tables也不能null,因为它是只读属性,你不能分配null,所以第二次检查是没有意义的。
  • dataSet.Tables[0].Rows不能null,因为它是只读属性,你不能分配null,所以最后一个检查是多余的。

但是您忘记了DataSet可能是空的,因此不包含任何DataTables。 在这种情况下,您的if会在dataSet.Tables[0]时引发异常。

我会使用:

int? firstTablesRowCount = dataSet?.Tables.Cast<DataTable>().FirstOrDefault()?.Rows.Count;
if (firstTablesRowCount.GetValueOrDefault() == 0)
{
Console.WriteLine($"Error at {nameof(dataSet)}");
}

这可确保DataSet不为 null 并包含表,并且第一个表包含行。

尝试

if(dataSet?.Tables?.FirstOrDefault()?.Rows == null) {}

FirstOrDefault()返回第一个条目,如果没有,则返回 null。

最新更新