Algo en la parte posterior de este question que se pregunta por el comportamiento del parámetro out
pero más centrado de por qué estos métodos utilizan TryParse
out
y no ref
.¿Por qué métodos TryParse utiliza un parámetro de salida y no un ref
Ha habido algunos casos en los que desea inicializar un valor para el argumento antes de analizar y mantenerlo cuando el análisis falla pero realmente no le importa si falla. Sin embargo, debido al parámetro out
, el valor se restablece.
Este escenario podría tener este aspecto ...
int arg = 123;
Int32.TryParse(someString, ref arg);
Sin embargo, debido a la out
parámetro tenemos que escribirlo como este, que se mostrará más información ...
int arg;
if(!Int32.TryParse(someString, out arg)
{
arg = 123;
}
que se dan cuenta que saber que el análisis fracasó puede ser muy útil; sin embargo, el uso de ref
no lo excluye.
¿Por qué estos métodos TryParse usan out
y no ref
?
Además, ¿por qué no hay un 'T TryParse (valor de cadena)' que simplemente devuelve 'default (T)' si el análisis falla? –
@BennorMcCarthy: Porque no podrías distinguir entre '" 0 "' y '" o "'. – SLaks
@BennorMcCarthy: Porque entonces no se puede decir la diferencia entre estos dos: "0" (analiza a 0 con éxito) y "manzanas" (analiza sin éxito, por defecto a 0). –