Menu
Coddy logo textTech

Short-Circuit Evaluation

Часть раздела Логика и управление потоком путешествия по C# на Coddy — урок 36 из 66.

Короткозамкнутая оценка — это техника оптимизации в C#, при которой второй операнд логических операторов И (&&) и ИЛИ (||) вычисляется только при необходимости.

Для логического И (&&), если первый операнд равен false, результат всегда будет false независимо от второго операнда:

bool result = false && SomeMethod();

В этом примере SomeMethod() не будет вызван, потому что первый операнд уже false.

Для логического ИЛИ (||), если первый операнд равен true, результат всегда будет true независимо от второго операнда:

bool result = true || SomeMethod();

Здесь SomeMethod() не будет вызван, потому что первый операнд уже true.

Это поведение можно использовать для предотвращения ошибок, например, для проверки, является ли объект null перед обращением к его свойствам:

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

Задание

Легко

Создайте метод с именем ProcessUserInput, который принимает два аргумента:

  • Строку (input)
  • Целое число (minLength)

Метод должен:

  1. Проверить, что input не равен null
  2. Проверить, что длина input не менее minLength
  3. Только если оба условия истинны, вывести "Valid input: " за которым следует input
  4. Если хотя бы одно условие не выполнено, вывести "Invalid input"

Используйте короткозамкнутую оценку, чтобы предотвратить возможное NullReferenceException.

Шпаргалка

Короткозамкнутая оценка — это техника оптимизации, при которой второй операнд логических операторов вычисляется только при необходимости.

Для логического И (&&), если первый операнд равен false, второй операнд не вычисляется:

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

Для логического ИЛИ (||), если первый операнд равен true, второй операнд не вычисляется:

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

Это предотвращает ошибки путем проверки условий по порядку:

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

Попробуйте сами

using System;

class ProcessUserInput
{
    public static void processUserInput(string input, int minLength)
    {
        // Напишите свой код здесь
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком