在C#中检查空对象数组

时间:2014-09-30 02:54:08

标签: c#

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

SqlParameter[] sqlCmdParameters=new SqlParameter[0];

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

 void CallDB( SqlParameter[] sqlCmdParameters)
 {

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

  } 

上面的代码遇到"对象引用未找到异常"因为数组是空的。 我可以在循环中执行元素明智的null检查,但我认为这不是一个好方法。 在C#中检查空数组的最佳做法是什么?另外,当没有元素时,为什么空数组长度为1?

2 个答案:

答案 0 :(得分:2)

您应该更改您的if语句

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

在你的情况下,你不能永远不会返回,因为参数不能为空,长度为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;
 }   

答案 1 :(得分:0)

你的守则似乎不合适。

应该是这样的。

SqlParameter[] sqlCmdParameters=new SqlParameter[0];    

 void CallDB( SqlParameter[] sqlCmdParameters)
 {

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

  }