web-dev-qa-db-fra.com

Comment quitter une fonction?

je sais que dans vb.net vous pouvez simplement faire Exit Sub

mais je voudrais savoir comment quitter un événement de clic dans un bouton?

voici mon code:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
    {
        //exit this event
    }
}

Utilisez l'instruction return.

Référence MSDN

32
Igby Largeman

Utilisez le mot clé return .

Depuis MSDN:

L'instruction return termine l'exécution de la méthode dans laquelle elle apparaît et renvoie le contrôle à la méthode appelante. Il peut également renvoyer la valeur de l'expression facultative. Si la méthode est du type void, l'instruction return peut être omise.

Donc dans votre cas, l'utilisation serait:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
    {
        return; //exit this event
    }
}
20
Donut
return; // Prematurely return from the method (same keword works in VB, by the way)
8
Rowland Shaw

Il existe deux façons de quitter une méthode plus tôt (sans quitter le programme):

i) Utilisez le mot-clé return.
ii) Lancez une exception.

Les exceptions ne doivent être utilisées que dans des circonstances exceptionnelles - lorsque la méthode ne peut pas continuer et ne peut pas renvoyer une valeur raisonnable qui aurait du sens pour l'appelant. Habituellement, vous devez simplement revenir lorsque vous avez terminé.

Si votre méthode retourne void, vous pouvez écrire return sans valeur:

return;
2
Amuk Saxena

Je suggère d'essayer d'éviter d'utiliser return/exit si vous n'êtes pas obligé. Certaines personnes vous diront avec dévotion de ne JAMAIS le faire, mais parfois, cela a du sens. Cependant, si vous pouvez structurer vos chèques de manière à ce que vous n'ayez pas à y entrer, je pense que cela permet aux gens de suivre votre code plus facilement.

2
Thyamine

Utilisez le mot-clé return.

return; //exit this event
2
K.Hayoev

Vous pouvez simplement google pour "exit sub in c #".

Aussi pourquoi voudriez-vous vérifier chaque zone de texte si elle est vide. Vous pouvez placer le champvalidator requis pour ces zones de texte s'il s'agit d'une application asp.net et vérifier si (Page.IsValid)

Ou une autre solution consiste à ne pas respecter ces conditions:

private void button1_Click(object sender, EventArgs e)
{
    if (!(textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == ""))
    {
        //do events
    }
}

Et mieux utiliser String.IsNullOrEmpty:

private void button1_Click(object sender, EventArgs e)
{
    if (!(String.IsNullOrEmpty(textBox1.Text)
    || String.IsNullOrEmpty(textBox2.Text)
    || String.IsNullOrEmpty(textBox3.Text)))
    {
        //do events
    }
}
1
HasanG