Lors du renvoi des paramètres, obtenir cette erreur
Erreur: le paramètre Out doit être attribué avant que le contrôle ne quitte la méthode actuelle
Le code est
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();
}
l'appeler comme
GetPapers(web, out Id1, out Id2);
Relatif à cette question
Vous affectez Id1
et Id2
à l'intérieur d'une instruction if et d'un compilateur ne peut pas déterminer si une valeur lui sera affectée au moment de l'exécution, d'où l'erreur.
Vous pouvez leur attribuer une valeur par défaut avant l'instruction if. Quelque chose comme.
Id1 = 0;
Id2 = 0;
if (rdr.Read())
{
Id1 = (int)rdr["ID1"];
Id2 = (int)rdr["ID2"];
}
ou spécifiez des valeurs par défaut dans la partie else
de votre condition.
Un paramètre de type out
doit recevoir une certaine valeur avant que le contrôle ne quitte les fonctions. Dans votre cas, le compilateur ne peut pas déterminer si vos variables seront affectées ou non, car elles sont affectées dans une instruction if
.
Voir: 5.3 Affectation définitive
À un emplacement donné dans le code exécutable d'un membre de fonction, une variable est dite définitivement affectée si le compilateur peut prouver, par analyse de flux statique, que la variable a été automatiquement initialisée ou a été la cible d'au moins une affectation.
Vous devez initialiser ces variables;
il doit contenir une certaine valeur avant d'être renvoyé par la méthode Getpapers ()