Какое значение по умолчанию для ненулевых ссылочных типов в C # 8? - PullRequest
3 голосов
/ 10 апреля 2019

Если я включу ссылочные типы, допускающие обнуляемость, какое значение будет иметь следующая строка, если я объявлю ее так?

string text;

1 Ответ

7 голосов
/ 10 апреля 2019

Значение будет null.

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

Если вы объявите этот класс:

public class Test
{ 
    private string text;
}

Вы получите это предупреждение для вашего класса:

CS8618: Non-nullable field 'text' is uninitialized.

Однако, код все еще компилируется .

Таким образом, чтобы (снова) ответить на ваш вопрос, значение по умолчанию для этого поля будет null.

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


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

...