我的应用程序中有以下代码:
SqlParameter[] sqlCmdParameters=new SqlParameter[0];
稍后,我将数组传递给方法如下:
void CallDB( SqlParameter[] sqlCmdParameters)
{
if (sqlCmdParameters == null && sqlCmdParameters.Length>=0 )
{
return;
}
Console.Writeline(sqlCmdParameters[0].value);
}
上面的代码遇到"对象引用未找到异常"因为数组是空的。 我可以在循环中执行元素明智的null检查,但我认为这不是一个好方法。 在C#中检查空数组的最佳做法是什么?另外,当没有元素时,为什么空数组长度为1?
答案 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);
}