Évaluation court-circuit
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 36 sur 66.
L'évaluation à court-circuit est une technique d'optimisation en C# où le second opérande des opérateurs logiques ET (&&) et OU (||) est évalué uniquement lorsque nécessaire.
Pour l'ET logique (&&), si le premier opérande est false, le résultat sera toujours false indépendamment du second opérande :
bool result = false && SomeMethod();Dans cet exemple, SomeMethod() ne sera pas appelée parce que le premier opérande est déjà false.
Pour l'OU logique (||), si le premier opérande est true, le résultat sera toujours true indépendamment du second opérande :
bool result = true || SomeMethod();Ici, SomeMethod() ne sera pas appelée car le premier opérande est déjà true.
Ce comportement peut être utilisé pour éviter les erreurs, comme vérifier si un objet est null avant d'accéder à ses propriétés :
// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Défi
FacileCréez une méthode nommée ProcessUserInput qui prend deux arguments :
- Une chaîne de caractères (
input) - Un entier (
minLength)
La méthode doit :
- Vérifier si l'entrée n'est pas null
- Vérifier si la longueur de l'entrée est au moins
minLength - Seulement si les deux conditions sont vraies, afficher "Valid input: " suivi de l'entrée
- Si l'une des conditions échoue, afficher "Invalid input"
Utilisez l'évaluation à court-circuit pour éviter toute NullReferenceException potentielle.
Aide-mémoire
L'évaluation à court-circuit est une technique d'optimisation où le second opérande des opérateurs logiques n'est évalué que lorsque nécessaire.
Pour l'AND logique (&&), si le premier opérande est false, le second opérande n'est pas évalué :
bool result = false && SomeMethod(); // SomeMethod() won't be calledPour l'OR logique (||), si le premier opérande est true, le second opérande n'est pas évalué :
bool result = true || SomeMethod(); // SomeMethod() won't be calledCela évite les erreurs en vérifiant les conditions dans l'ordre :
// Safe - if student is null, student.Grade won't be accessed
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Essayez vous-même
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// Écrivez votre code ici
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées7Opérateurs logiques avancés
Évaluation court-circuitOpérateurs logiques conditionnelsPriorité des opérateursRécapitulatif - Opérateurs avancés2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety