Оператор !
Суффикс ! ставят сразу после выражения
nullable-типа. Компилятор перестаёт считать
результат потенциально пустым, но в рантайме
! значение не меняет: если там всё же
null, обращение к члену приведёт к
NullReferenceException. Имеет смысл
применять ! только когда вы уверены
в наличии значения. В примерах включён
#nullable enable.
Синтаксис
выражение!
Пример
Давайте выведем строку, которая задана литералом
и точно не null:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = "abcde";
string res = str!;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте обратимся к Length через !
у строки с известным значением:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = "abcde";
Console.WriteLine(str!.Length);
}
}
Результат выполнения кода:
5
Пример
Давайте вернём строку из метода и применим !
к результату:
#nullable enable
using System;
class Program
{
static string? GetStr()
{
return "12345";
}
static void Main()
{
string res = GetStr()!;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"12345"
Пример
Давайте сравним выражение с ! и без него
при том же значении:
#nullable enable
using System;
class Program
{
static void Main()
{
string? str = "abcde";
Console.WriteLine(str == str!);
}
}
Результат выполнения кода:
True