Раньше я никогда не использовал выходные параметры, отчасти я думаю, что синтаксис просто неуклюжий. Однако несколько лет назад я начал больше их использовать, и они стали общим аспектом кода, который я пишу.
Я думаю, что это та функция, в которой я действительно хотел бы написать функцию с выходным параметром и логическим типом возврата, как показано ниже:
public bool GetItem<T>(out T value)
{
if (someCondition<T>())
{
value = someCalculation<T>();
return true;
}
else
{
value = default(T);
return false;
}
}
При таком подходе нет необходимости ограничивать ваш универсальный параметр ссылочным типом или обнуляемым типом.
Как я упоминал выше, я изначально чувствовал, что синтаксис выходного параметра был неуклюжим, но после того, как я действительно начал часто его использовать, я почувствовал, что код, который потребляет мои функции с выходными параметрами, на самом деле был более точным в представлении проблемы, которую я пытался решить, если это имеет смысл.