gpt4 book ai didi

c# - null 或空检查的代码优化

转载 作者:行者123 更新时间:2023-11-30 20:32:33 25 4
gpt4 key购买 nike

您好,我正在检查数据表 行值。如果该值不为 null 或空,则检查该值是否为数字。否则添加到错误列表中。如果值为 null 或空,则分配 null。

代码运行良好,但我想检查是否有更好的方法来执行此操作。如有任何建议,我们将不胜感激。

这是我的代码。

if (!(row.IsNull("limit") || row["limit"].ToString().Length == 0))
{
//Check if value is number
if (int.TryParse(row["limit"].ToString().Trim(), out n))
{
query.limit = Convert.ToInt32(row["limit"].ToString().Trim());

}
else
{
errorList.Add("limit: Value:" + row["limit"].ToString());
}

}
//if value is null then assign null
else
{
query.limit = null;
}

最佳答案

有几点我不得不提一下:

  • 通过使用 int.TryParse解析 row["limit"]您将在 out 参数中获得转换后的值,然后您无需使用 Convert.ToInt32 再次将其转换为整数,改用 out 参数。
  • 第一个if可以使用 NullConditional 运算符 ( ?. ) 进行简化。
  • 可能有机会获得 row为空,在这种情况下,您需要检查 null在访问 row["limit"] 之前否则 NullReference 将是结果

我认为如果你这样做会更加清晰和简单:

if (row != null && row["limit"]?.ToString() != "") // means row["limit"] definitely has some value
{
int currentLimit = 0;
if (int.TryParse(row["limit"].ToString().Trim(), out currentLimit))
{
query.limit = currentLimit ;
}
else
{
errorList.Add("limit: Value:" + row["limit"].ToString());
}
}
else
{
query.limit = null;
}

如果您不使用 c# 6,则 row["limit"]?.ToString()在这种情况下将不起作用,您必须像这样使用条件:

  if (row != null && row["limit"] != null && row["limit"].ToString() != "")

关于c# - null 或空检查的代码优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41255604/

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