Los parámetros ref y out se usan para devolver valores en la misma variable, que se pasan como un argumento de un método. Estos dos parámetros son muy útiles cuando su método necesita devolver más de un valor.
ref y out permiten que el método llamado modifique un parámetro. La
diferencia entre ellos es lo que sucede antes de usted hace la
llamada.
ref significa que el parámetro
tiene un valor antes al entrar en la función. La función llamada
puede leer y/o cambiar el valor en cualquier momento. El parámetro entra,
luego sale
out significa que el parámetro
no tiene valor oficial antes de entrar en la función. La función llamada debe
inicializarla. El parámetro solo sale
Antes de llamar
al método:
ref: La persona que llama debe establecer el valor
del parámetro antes de pasarlo al método llamado.
out: el método del llamador no es necesario para
establecer el valor del argumento antes de llamar al método. Lo más probable es
que no deberías. De hecho, cualquier valor actual es descartado.
Durante la
llamada:
ref: El método llamado puede leer el argumento en
cualquier momento.
out: El método llamado debe inicializar el parámetro
antes de leerlo.
Llamadas
remotas:
ref: el valor actual se calcula en la llamada remota.
Costo extra de rendimiento.
out: No se pasa nada a la llamada remota. Más rápido.
Técnicamente hablando, podría usar siempre ref en lugar de out, pero out le permite ser más preciso sobre el significado del argumento, y algunas veces puede ser mucho más eficiente.