В некоторой степени в этом вопросе , который задает вопрос о поведении параметра 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
?