c# compiler-errors .net-2.0

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

Pregunta relacionada


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.