Нуллевый тип
Запись T? помечает тип как допускающий null.
Для ссылочных типов, например string?, это
аннотация в режиме nullable-контекста. Для
значимых типов int?, bool? и других
форма T? означает «значение типа T
или null». Чтобы предупреждения о null
имели смысл, в начале файла включают
#nullable enable.
Синтаксис
тип?
Пример
Давайте объявим строку, которая может быть null:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = "abcde";
Console.WriteLine(str);
str = null;
Console.WriteLine(str is null);
}
}
Результат выполнения кода:
"abcde"
True
Пример
Давайте зададим nullable-целое и выведем число:
#nullable enable
using System;
class Program
{
static void Main()
{
int? num = 12;
Console.WriteLine(num);
}
}
Результат выполнения кода:
12
Пример
Давайте присвоим null переменной int?:
#nullable enable
using System;
class Program
{
static void Main()
{
int? num = 12;
num = null;
Console.WriteLine(num is null);
}
}
Результат выполнения кода:
True
Пример
Давайте сравним обычный int и int? при
отсутствии значения:
#nullable enable
using System;
class Program
{
static void Main()
{
int? num = null;
Console.WriteLine(num.HasValue);
}
}
Результат выполнения кода:
False