正在检查C#中的空对象数组

本文关键字:对象 数组 检查 | 更新日期: 2023-09-27 18:24:58

我的应用程序中有以下代码:

SqlParameter[] sqlCmdParameters=new SqlParameter[0];

稍后,我将数组传递给以下方法:

 void CallDB( SqlParameter[] sqlCmdParameters)
 {
       if (sqlCmdParameters == null && sqlCmdParameters.Length>=0 )
       {
           return;
       }   
       Console.Writeline(sqlCmdParameters[0].value);        
  } 

上面的代码遇到一个"Object reference not found exception",因为数组为空。我可以在循环中执行元素式的null检查,但我认为这不是一个好方法。在C#中检查空数组的最佳做法是什么?此外,当根本没有元素时,为什么空数组的长度是1?

正在检查C#中的空对象数组

您应该更改if语句

 if (sqlCmdParameters == null || sqlCmdParameters.Length == 0 )
 {
      return;
 }   

在您的情况下,您永远不能达到返回值,因为参数不能为null并且它们的Length=0。

这里有SqlParameters列表。

List<SqlParameter> sqlCmdParameters= new List<SqlParameter>();
SqlParameter param = new SqlParameter();
param.Value = "test";
sqlCmdParameters.Add(param);

如果您选择使用List,则应在If语句中进行检查

 if (sqlCmdParameters == null || sqlCmdParameters.Count == 0 )
 {
      return;
 }   

您的代码似乎不正确。

应该是这样的。

SqlParameter[] sqlCmdParameters=new SqlParameter[0];    
 void CallDB( SqlParameter[] sqlCmdParameters)
 {
       if (sqlCmdParameters == null || sqlCmdParameters.Length <= 0 )
       {
           return;
       }   
       Console.Writeline(sqlCmdParameters[0].value);        
  }