#c# #non-nullable #c#-8.0 #nullable-reference-types
#c# #ненулевой #c #-8.0 #nullable-reference-types
Вопрос:
Если я включу ссылочные типы с нулевым значением, каким будет значение следующей строки, если я объявлю ее так?
string text;
Комментарии:
1. Это тоже был мой вопрос. Если ссылочные типы не обнуляются, почему они имеют
null
значения по умолчанию lol
Ответ №1:
Значение будет null
.
Имейте в виду, что новая система для ненулевых ссылочных типов будет только предупреждать вас о проблемах, она не выдаст вам ошибку, а это означает, что код все равно будет компилироваться с предупреждениями.
Если вы объявите этот класс:
public class Test
{
private string text;
}
Вы получите это предупреждение для своего класса:
CS8618: Non-nullable field 'text' is uninitialized.
Тем не менее, код все еще компилируется.
Итак, чтобы (снова) ответить на ваш вопрос, значение по умолчанию для этого поля будет null
.
Примечание: Если вы используете этот оператор для объявления локальной переменной, ответ заключается в том, что у нее не будет значения, она будет считаться определенно неназначенной, и вам не разрешается читать из этой переменной, пока у вас не будет кода, который делает ее определенно назначенной первой.
Что касается предупреждений и ошибок, вы можете выбрать, чтобы получать их как ошибки, поиграв с параметрами проекта и перечислив предупреждения, которые вы хотите рассматривать как ошибки. вместо этого.