web-dev-qa-db-fra.com

Erreur: le paramètre Out doit être attribué avant que le contrôle ne quitte la méthode actuelle

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

Question connexe

24
fdgfdgs dfg

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.

32
Habib

Vous devez initialiser ces variables;

il doit contenir une certaine valeur avant d'être renvoyé par la méthode Getpapers ()

3
Dhanasekar