В некоторой степени в этом вопросе , который задает вопрос о поведении параметра out, но более сфокусирован на том, почему эти методы TryParse используют out а не ref.
Были некоторые сценарии, в которых вы хотите инициализировать значение аргумента перед синтаксическим разбором и сохранять это при разборе синтаксического анализа, но на самом деле все равно, если он не работает. Однако из-за параметра out значение равно reset.
Этот сценарий может выглядеть так...
int arg = 123;
Int32.TryParse(someString, ref arg);
Однако из-за параметра out мы должны записать его так, что более подробно...
int arg;
if(!Int32.TryParse(someString, out arg)
{
arg = 123;
}
Я понимаю, что знание о том, что синтаксический анализ не удалось, может быть очень полезным, однако использование ref не исключает этого.
Итак, почему эти методы TryParse используют out, а не ref?