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 — локальная установка не требуется.
Все уроки этого курса
- Знакомство с nullable-типами значений
- Свойства HasValue и Value
- Операторы объединения с null
- Nullable в вычислениях