返回语句中未分配的变量

本文关键字:变量 分配 语句 返回 | 更新日期: 2023-09-27 18:29:26

由于某种原因,我似乎无法以捕获此存储过程的返回值(0或-1)的方式进行返回,要么它返回用于初始化变量的值,要么一直告诉我本地变量未分配。

public int changePass(int idUsuario, String old_pass, String new_pass)
{
    int result;
    try
    {
        DataTable tablaResultado =
            DataBaseAccess.advanceStoredProcedureRequest(
                "pa_usuario_change_pass",
                new SPP[]
                    {
                        new SPP("id_usuario", idUsuario.ToString()),
                        new SPP("old_pass", old_pass.ToString()),
                        new SPP("new_pass", new_pass.ToString())
                    });
        if (tablaResultado.Rows.Count > 0)
        {
            if (tablaResultado.Rows[0] != null)
            {
                result = (int.Parse(tablaResultado.Rows[0].ItemArray[0].ToString()));
            }
        }
        return result;
    }
    catch (System.Data.SqlClient.SqlException sqlException)
    {
        throw sqlException;
    }
}

我有多种方法遵循相同的模式,所有这些工作,我已经尝试了一段时间,我确信我忽略了一些非常明显的东西。不管怎样,我现在都找不到它,所以我希望有人能刷新我的记忆或给我一个提示。

返回语句中未分配的变量

如果两个不同的条件恰好都是true,则代码仅为result变量赋值。也就是说,如果行计数>0,并且第一行不是null。编译器完全合法地告诉您,您的代码包含指向return语句的路径,其中所使用的变量尚未被赋值。

如果这两个条件中的任何一个是而不是true,则需要决定该方法应该返回什么,然后将该值分配给result变量,作为其初始化的一部分。

编辑:

需要明确的是:您可能忽略了代码无法成功执行存储过程的可能性。但只有当这两个条件为真时,它才能返回要分配给result的值。当其中一个或另一个条件不成立时,您需要选择一个合理返回的默认值,或者您需要修复代码,使这些条件始终为真(从而SP始终成功执行)。