Menu
Coddy logo textTech

Short-Circuit Evaluation

Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 36 de 66.

Avaliação de curto-circuito é uma técnica de otimização no C# onde o segundo operando dos operadores AND lógico (&&) e OR (||) é avaliado apenas quando necessário.

Para o AND lógico (&&), se o primeiro operando for false, o resultado será sempre false independentemente do segundo operando:

bool result = false && SomeMethod();

Neste exemplo, SomeMethod() não será chamado porque o primeiro operando já é false.

Para o OR lógico (||), se o primeiro operando for true, o resultado será sempre true independentemente do segundo operando:

bool result = true || SomeMethod();

Aqui, SomeMethod() não será chamado porque o primeiro operando já é true.

Esse comportamento pode ser usado para prevenir erros, como verificar se um objeto é null antes de acessar suas propriedades:

// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}
challenge icon

Desafio

Fácil

Crie um método chamado ProcessUserInput que recebe dois argumentos:

  • Uma string (input)
  • Um inteiro (minLength)

O método deve:

  1. Verificar se o input não é null
  2. Verificar se o comprimento do input é pelo menos minLength
  3. Somente se ambas as condições forem verdadeiras, imprimir "Valid input: " seguido do input
  4. Se qualquer condição falhar, imprimir "Invalid input"

Use avaliação de curto-circuito para prevenir qualquer NullReferenceException potencial.

Folha de consulta

A avaliação em curto-circuito é uma técnica de otimização na qual o segundo operando de operadores lógicos é avaliado apenas quando necessário.

Para o AND lógico (&&), se o primeiro operando for false, o segundo operando não é avaliado:

bool result = false && SomeMethod(); // SomeMethod() won't be called

Para o OR lógico (||), se o primeiro operando for true, o segundo operando não é avaliado:

bool result = true || SomeMethod(); // SomeMethod() won't be called

Isso evita erros ao verificar as condições na ordem correta:

// Safe - if student is null, student.Grade won't be accessed
if (student != null && student.Grade > 70)
{
    Console.WriteLine("Student passed!");
}

Experimente você mesmo

using System;

class ProcessUserInput
{
    public static void processUserInput(string input, int minLength)
    {
        // Escreva seu código aqui
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo