Как упростить проверку того, является ли ссылочная переменная нулевой?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

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