c# - Error: El parámetro Out debe asignarse antes de que el control abandone el método actual
compiler-errors .net-2.0 (2)
Necesita inicializar esas variables;
debe contener algún valor antes de regresar del método Getpapers ()
Al devolver parámetros obteniendo este error
Error: El parámetro Out debe asignarse antes de que el control abandone el método actual
El código es
public void GetPapers(string web, out int Id1, out int Id2)
{
SqlConnection conn = new SqlConnection(ConnectionString());
conn.Open();
SqlCommand cmd = new SqlCommand("GetPapers", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@URL", String(web)));
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
Id1 = (int)rdr["ID1"];
Id2 = (int)rdr["ID2"];
}
rdr.Close();
}
llamándolo como
GetPapers(web, out Id1, out Id2);
Relacionado con esta pregunta
Está asignando Id1
e Id2
dentro de una sentencia if y el compilador no puede determinar si se le asignará un valor en tiempo de ejecución, por lo tanto, el error.
Podría asignarles un valor predeterminado antes de la instrucción if. Algo como.
Id1 = 0;
Id2 = 0;
if (rdr.Read())
{
Id1 = (int)rdr["ID1"];
Id2 = (int)rdr["ID2"];
}
o especifique algunos valores predeterminados en else
parte de su condición.
A out
parámetro de tipo out
se le debe asignar algún valor, antes de que el control abandone las funciones. En su caso, el compilador no puede determinar si sus variables serán asignadas o no, porque se está asignando dentro de una instrucción if
.
Ver: 5.3 Asignación definitiva
En una ubicación dada en el código ejecutable de un miembro de función, se dice que una variable se asigna definitivamente si el compilador puede demostrar, mediante análisis de flujo estático, que la variable se ha inicializado automáticamente o ha sido el objetivo de al menos una asignación.