0Pricing
C# Academy · Урок

Nullable в вычислениях

Разберитесь, как значения null распространяются в арифметических операциях.

«Nullable в вычислениях» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.

Операторы для типов с пустыми значениями

C# «поднимает» арифметические операторы и операторы сравнения, чтобы они работали с типами, допускающими пустое значение. Такие операторы, как +, автоматически получают версию для типа с пустым значением.

using System;

class Program {
    static void Main() {
        int? a = 5;
        int? b = 3;
        Console.WriteLine(a + b);
    }
}

Пустое значение распространяется через вычисления

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

using System;

class Program {
    static void Main() {
        int? a = 5;
        int? b = null;
        int? sum = a + b;
        Console.WriteLine(sum.HasValue);
    }
}

Вывод пустых результатов

Пустой арифметический результат выводится как пустая строка, что соответствует отображению значений, допускающих пустое значение.

using System;

class Program {
    static void Main() {
        int? a = null;
        Console.WriteLine("Result: [" + (a * 2) + "]");
    }
}

Сочетание типов с пустыми и непустыми значениями

В вычислениях можно сочетать int и int?: тип int преобразуется в тип, допускающий пустое значение, и результат также допускает пустое значение.

using System;

class Program {
    static void Main() {
        int? a = 10;
        int b = 4;
        int? result = a - b;
        Console.WriteLine(result);
    }
}

Операторы сравнения для типов с пустыми значениями

Операторы сравнения для типов с пустыми значениями также поднимаются. Если одна из сторон имеет пустое значение, сравнения порядка, например <, возвращают false.

using System;

class Program {
    static void Main() {
        int? a = null;
        int? b = 5;
        Console.WriteLine(a < b);
        Console.WriteLine(a > b);
    }
}

Равенство с пустым значением

В отличие от сравнений порядка, равенство определено: два пустых значения равны, а пустое значение не равно ни одному числу.

using System;

class Program {
    static void Main() {
        int? a = null;
        int? b = null;
        Console.WriteLine(a == b);
        Console.WriteLine(a == 0);
    }
}

Сочетание ?? с вычислениями

Используйте ??, чтобы заменить пустое значение безопасным числом перед вычислением и сохранить непустой результат.

using System;

class Program {
    static void Main() {
        int? a = null;
        int total = (a ?? 0) + 100;
        Console.WriteLine(total);
    }
}

Защита от деления

Сочетайте проверки HasValue с вычислениями, чтобы избежать и пустых значений, и деления на ноль.

using System;

class Program {
    static void Main() {
        int? a = 20, b = 4;
        if (a.HasValue && b.HasValue && b.Value != 0)
            Console.WriteLine(a.Value / b.Value);
    }
}

Суммирование данных с пустыми значениями

При суммировании данных, которые могут содержать пустые значения, решите, следует ли их пропускать или считать нулём.

using System;

class Program {
    static void Main() {
        int?[] data = { 5, null, 10, null, 2 };
        int total = 0;
        foreach (var x in data)
            total += x ?? 0;
        Console.WriteLine(total);
    }
}

Логика со значением bool?

Значение bool? участвует в логике с поддержкой пустых значений: true | null даёт true, false & null даёт false, а во всех остальных случаях результатом является null.

using System;

class Program {
    static void Main() {
        bool? a = null;
        bool? b = true;
        Console.WriteLine(a | b);
    }
}

Преобразование результата в обычное значение

После вычисления с типом, допускающим пустое значение, используйте ?? или GetValueOrDefault, чтобы получить обычное значение для отображения.

using System;

class Program {
    static void Main() {
        int? a = 6, b = 7;
        int product = (a * b) ?? 0;
        Console.WriteLine(product);
    }
}

Быстрая проверка

Проверьте свои знания об арифметике с типами, допускающими пустые значения.

Итоги

C# поднимает арифметические операторы, операторы сравнения и логические операторы для типов, допускающих пустые значения. Любой пустой операнд в арифметическом выражении даёт пустой результат, а сравнения порядка с пустым значением возвращают false, тогда как равенство определено однозначно.

Используйте ?? или GetValueOrDefault, чтобы подставить безопасные значения до или после вычислений, а при необходимости выполняйте проверку с помощью HasValue.

Часто задаваемые вопросы

Урок «Nullable в вычислениях» бесплатный?

Да — полный текст урока «Nullable в вычислениях» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.

Чему я научусь в уроке «Nullable в вычислениях»?

Разберитесь, как значения null распространяются в арифметических операциях. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Nullable в вычислениях»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Знакомство с nullable-типами значений
  2. Свойства HasValue и Value
  3. Операторы объединения с null
  4. Nullable в вычислениях
← Назад к C# Academy