Каково значение по умолчанию для ненулевых ссылочных типов в C # 8?

#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 .

Примечание: Если вы используете этот оператор для объявления локальной переменной, ответ заключается в том, что у нее не будет значения, она будет считаться определенно неназначенной, и вам не разрешается читать из этой переменной, пока у вас не будет кода, который делает ее определенно назначенной первой.


Что касается предупреждений и ошибок, вы можете выбрать, чтобы получать их как ошибки, поиграв с параметрами проекта и перечислив предупреждения, которые вы хотите рассматривать как ошибки. вместо этого.