Директива nullable
Директива nullable задаёт nullable-контекст
в файле: "#nullable enable", "#nullable disable"
или "#nullable restore". Она не меняет
само значение null в памяти - только
строгость анализа компилятора. При enable
присваивание null переменной string
без ? обычно даёт предупреждение, а
запись string?
помечает тип как допускающий null.
Синтаксис
#nullable enable
#nullable disable
#nullable restore
Пример
Давайте включим контекст и безопасно обработаем
null через string?:
#nullable enable
using System;
class Program
{
static void Main()
{
string? name = null;
string res = name ?? "12345";
Console.WriteLine(res);
}
}
Результат выполнения кода:
"12345"
Пример
Давайте отключим контекст - присваивание
null типу string без ?
не вызывает предупреждения:
#nullable disable
using System;
class Program
{
static void Main()
{
string str = null;
string res = str ?? "abcde";
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте включим контекст, затем вернём
настройку через restore:
#nullable enable
using System;
class Program
{
static void Main()
{
string? left = "12345";
string? right = null;
#nullable restore
string res = (left ?? "a") + (right ?? "e");
Console.WriteLine(res);
}
}
Результат выполнения кода:
"12345e"
Смотрите также
-
нуллевый тип
nullable,
который помечает тип как допускающий null -
оператор
null-coalesce,
который подставляет значение при null -
оператор
null-forgiving,
который подавляет предупреждение о null -
директива
pragma,
которая управляет другими предупреждениями