声明和使用SqlParameter[]的问题.错误:使用未分配的局部变量'sqlparam'

本文关键字:分配 局部变量 sqlparam 问题 SqlParameter 错误 声明 | 更新日期: 2023-09-27 18:02:47

我必须声明一个SqlParameter[]。它的大小是动态的,基于下拉列表的选择。我已经实现了一个方法如下

protected void BindGrid()
{
    SqlParameter[] sqlparam;
    string SP = string.Empty;
    if (ddlKPIType.SelectedIndex == 0)//For Overall
    {
        sqlparam = PrepareSqlParams();
    }
    else if (ddlKPIType.SelectedIndex == 1)//For Parameterwise
    {
        sqlparam = PrepareSqlParamsForParameterWise();
    }
    else if (ddlKPIType.SelectedIndex == 2)//For Measurement Criteria wise
    {
        sqlparam = PrepareSqlParamsForMeasurmentCriteriaWise();
    }

    DataSet dsReport = GetReportDataSet(sqlparam, SP);
    if (isDataSetValid(dsReport))
        gridMonthlyReport.DataSource = dsReport.Tables[0];
    gridMonthlyReport.DataBind();
}

但是在此代码中,当我将sqlparam作为参数传递给GetReportDataSet()时,它显示错误"使用未分配的本地变量'sqlparam'。

方法:PrepareSqlParams() , PrepareSqlParamsForParameterWise() and PrepareSqlParamsForMeasurmentCriteriaWise()将返回SqlParameter[].

我哪里出错了?谁来帮帮我。

声明和使用SqlParameter[]的问题.错误:使用未分配的局部变量'sqlparam'

sqlparam不能保证被赋值,因为没有else子句。如果ddlKPIType.SelectedIndex为3或更大,则不会分配sqlparam,因为if-else if子句的任何分支都不会被执行。
您可以通过以下几种方法来克服这个问题:

  1. 如果您确定它永远不会大于或等于3,则插入else子句并抛出ArgumentOutOfRangeException
  2. 如果你不确定它永远不会是3或更大,只需初始化sqlparam