Short-Circuit Evaluation
Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 36 de 66.
La evaluación de cortocircuito es una técnica de optimización en C# donde el segundo operando de los operadores AND lógico (&&) y OR (||) se evalúa solo cuando es necesario.
Para el AND lógico (&&), si el primer operando es false, el resultado siempre será false independientemente del segundo operando:
bool result = false && SomeMethod();En este ejemplo, SomeMethod() no se llamará porque el primer operando ya es false.
Para el OR lógico (||), si el primer operando es true, el resultado siempre será true independientemente del segundo operando:
bool result = true || SomeMethod();Aquí, SomeMethod() no se llamará porque el primer operando ya es true.
Este comportamiento se puede usar para prevenir errores, como verificar si un objeto es null antes de acceder a sus propiedades:
// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Desafío
FácilCrea un método llamado ProcessUserInput que tome dos argumentos:
- Una cadena (
input) - Un entero (
minLength)
El método debe:
- Comprobar si la entrada no es nula
- Comprobar si la longitud de la entrada es al menos
minLength - Solo si ambas condiciones son verdaderas, imprimir "Valid input: " seguido de la entrada
- Si alguna condición falla, imprimir "Invalid input"
Usa evaluación de cortocircuito para prevenir cualquier posible NullReferenceException.
Hoja de referencia
La evaluación de cortocircuito es una técnica de optimización donde el segundo operando de los operadores lógicos se evalúa solo cuando es necesario.
Para AND lógico (&&), si el primer operando es false, el segundo operando no se evalúa:
bool result = false && SomeMethod(); // SomeMethod() no se llamaráPara OR lógico (||), si el primer operando es true, el segundo operando no se evalúa:
bool result = true || SomeMethod(); // SomeMethod() no se llamaráEsto previene errores al verificar las condiciones en orden:
// Seguro - si student es null, no se accederá a student.Grade
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Pruébalo tú mismo
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// Escribe tu código aquí
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety