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