Что это значит «строка»? сообщение' - PullRequest
0 голосов
/ 13 марта 2020

Я только что натолкнулся на это, глядя на определение класса PlatformNotSupportedException.

Что означает string? message. Насколько я понимаю, ? - это короткая рука для Nullable<>, но Nullable<> можно применять только к структурам, а string и Exception - классы.

Моя лучшая догадка - это необязательный параметр, объявленный как string message = null, если это так, почему бы просто не показать его и значение по умолчанию?

public PlatformNotSupportedException(string? message, Exception? inner);

1 Ответ

2 голосов
/ 13 марта 2020

Это способ объявления обнуляемых ссылочных типов. Синтаксис для ожидаемого NULL в C# 8:

Для начала должен существовать синтаксис для различения, когда ссылочный тип должен ожидать ноль и когда он должен «т. Очевидный синтаксис для разрешения нуля использует? как обнуляемое объявление - как для типа значения, так и для ссылочного типа. Включая поддержку ссылочных типов, разработчик получает возможность подписаться на null, например:

string? text = null;

Кроме того, мы можем объявить ненулевой ссылочный тип :

string! text = "It is non nullable"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...