Как упростить проверку того, является ли ссылочная переменная нулевой?C#

Место общения программистов C#
Ответить
Anonymous
 Как упростить проверку того, является ли ссылочная переменная нулевой?

Сообщение Anonymous »

Я написал метод, который возвращает ссылку на переменную (

Код: Выделить всё

ref return
), а иногда возвращаемая ссылка может быть нулевой. После вызова этого метода мне нужно проверить, является ли ссылка нулевой, и я ищу простой способ сделать это. Я хотел бы использовать оператор is, но он не компилируется:

Код: Выделить всё

ref int result = ref GetRef();
if (result is not null) // error CS0037: Cannot convert null to 'int' because it is a non-nullable value type
{
// ...
}
Онлайн-демо.
Официальным способом проверки значения null является метод Unsafe.IsNullRef:

Код: Выделить всё

ref int result = ref GetRef();
if (!Unsafe.IsNullRef(ref result))
{
// ...
}
Мне кажется, что это довольно утомительно писать и довольно сложно читать. Я часто выполняю эту проверку в файле кода, и опыт невелик. Есть ли способ сделать его проще/короче/читабельнее?
Для контекста в идеале я хотел бы использовать шаблон Try и возвращать ссылку из параметра out:

Код: Выделить всё

if (TryGetRef(out ref int result))
{
// ...
}
...но, насколько я понимаю, C# позволяет возвращать ссылки только через возвращаемое значение.
Связанная проблема GitHub, касающаяся поддержки синтаксиса is null для ссылок (это не входит в приоритеты Microsoft).

Подробнее здесь: https://stackoverflow.com/questions/798 ... le-is-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»