Знакомство с nullable-типами значений
Объявляйте int?, double? и разберитесь с Nullable .
«Знакомство с nullable-типами значений» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Типы значений не могут быть null
Обычно int всегда содержит число и никогда не может быть null. Иногда требуется представить «отсутствие значения», например отсутствующее измерение.
using System;
class Program {
static void Main() {
int count = 0;
Console.WriteLine(count);
}
}Nullable с ?
Добавьте ? после типа значения, чтобы сделать его допускающим значение null. int? может содержать любое значение int или null.
using System;
class Program {
static void Main() {
int? maybe = null;
Console.WriteLine(maybe.HasValue);
maybe = 42;
Console.WriteLine(maybe);
}
}Другие типы Nullable
Любой тип значения может допускать значение null: double?, bool?, DateTime? и так далее.
using System;
class Program {
static void Main() {
double? temp = null;
bool? flag = true;
Console.WriteLine(temp.HasValue + " " + flag);
}
}Nullable<T> в развёрнутом виде
int? — это просто сокращение для структуры Nullable<int>. Оба варианта компилируются ровно в один и тот же тип.
using System;
class Program {
static void Main() {
Nullable<int> a = 10;
int? b = 10;
Console.WriteLine(a == b);
}
}Присваивание значения null
Можно свободно присвоить null переменной, допускающей значение null, а позже присвоить ей настоящее значение.
using System;
class Program {
static void Main() {
int? id = 100;
Console.WriteLine(id);
id = null;
Console.WriteLine(id.HasValue);
}
}Вывод Nullable со значением null
Вывод Nullable, равного null, создаёт пустую строку, а не слово null.
using System;
class Program {
static void Main() {
int? value = null;
Console.WriteLine("[" + value + "]");
}
}Неявное преобразование в Nullable
Обычный int автоматически преобразуется в int?, поскольку любое значение int является допустимым значением Nullable.
using System;
class Program {
static void Main() {
int x = 7;
int? y = x;
Console.WriteLine(y);
}
}Nullable в возвращаемом значении метода
Метод может возвращать тип Nullable, чтобы сообщить, найдено ли значение или ничего не найдено.
using System;
class Program {
static int? FindEven(int[] nums) {
foreach (int n in nums)
if (n % 2 == 0) return n;
return null;
}
static void Main() {
Console.WriteLine(FindEven(new[] {1, 3, 4}));
}
}Сравнение Nullable
Равенство работает ожидаемым образом: два значения Nullable равны, если оба равны null или оба содержат одинаковое значение.
using System;
class Program {
static void Main() {
int? a = null;
int? b = null;
Console.WriteLine(a == b);
int? c = 5;
Console.WriteLine(c == 5);
}
}Зачем нужны типы Nullable
Типы значений, допускающие null, удобно представляют необязательные данные, например столбец базы данных, допускающий NULL, или поле, которое пользователь оставил пустым.
using System;
class Program {
static void Main() {
int? userAge = null;
string msg = userAge.HasValue ? "Age set" : "Age unknown";
Console.WriteLine(msg);
}
}Nullable — это структура
Nullable<T> сам является типом значения, поэтому переменная Nullable никогда не является ссылочным типом, даже если может иметь значение null.
using System;
class Program {
static void Main() {
int? n = 3;
Console.WriteLine(n.GetType().Name);
}
}Быстрая проверка
Проверьте своё понимание типов значений, допускающих null.
Повторение
Типы значений, такие как int, по умолчанию не могут иметь значение null. Добавление ? создаёт тип Nullable (int?), являющийся сокращением для Nullable<T>.
Типы Nullable позволяют представлять отсутствующие или необязательные данные, неявно преобразуются из базового типа и сами являются структурами.
Часто задаваемые вопросы
Урок «Знакомство с nullable-типами значений» бесплатный?
Да — полный текст урока «Знакомство с nullable-типами значений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Знакомство с nullable-типами значений»?
Объявляйте int?, double? и разберитесь с Nullable . Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Знакомство с nullable-типами значений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Знакомство с nullable-типами значений
- Свойства HasValue и Value
- Операторы объединения с null
- Nullable в вычислениях