Что означает null! (null с восклицательным знаком)?

Встретил в C# коде такое выражение в контексте работы с БД через EF:

public DbSet<MyType> MyData { get; set; } = null!;

Что означает равенство свойства null с восклицательным знаком?


Ответы (1 шт):

Автор решения: A K

Это фича из c# 8.0, где ввели Nullable Reference types

Т.е. раньше вы писали String или string и было понятно, что string - это ссылочный тип, а потому может быть null (в отличие допустим от int, которому не присвоить null)

А начиная с c# 8 вы можете указать компилятору при помощи NullableContextOptions = enable что string в коде и другие ссылочные типы не могут принимать null.

И вот как раз восклицательный знак после null -- это т.н. null-forgiving оператор, который позволяет указать что значение null допустимо.

Больше информации по теме:

→ Ссылка