2010-11-29 24 views
8

Entiendo que "salir" son como los tipos "ref", excepto que las variables de salida no tienen que inicializarse. ¿Hay algún otro uso de los parámetros de "salida"? A veces veo su uso en los métodos de devolución de llamada, pero nunca entendí cómo funcionan en realidad o por qué los necesitamos en lugar de variables de ref de nivel global.¿Por qué necesitamos parámetros de "salida"?

Respuesta

14

out parámetros imponen el contrato entre el que llama y el llamado (la función que se llama) al especificar explícitamente que el destinatario los inicializará. Por otro lado, al usar los parámetros ref, todo lo que sabemos es que el destinatario podría modificarlos, pero es responsabilidad del que llama inicializarlos.

3

Uno de los mayores ejemplos es los métodos TryParse, que quieren ser capaces de comprobar si algo se puede convertir, y por lo general si se puede convertir desea que el valor convertido. De lo contrario, es solo otra forma de pasar objetos al método de llamada.

3

por qué le gustaría tener algo para inicializar en el método de llamada, sin garantía de que el método llamado en sí podría sobrescribir la variable si el método se completa con normalidad? Esos son los beneficios que le brindan los parámetros out.

Básicamente pienso en out parámetros como "vaya, tengo que devolver más de un valor" indicadores. Preferiría usar tuplas, pero por supuesto solo lo hicieron en .NET 4 ... y sin un soporte de lenguaje explícito son un poco más difíciles de usar de lo que sería ideal también.

0

2 diferencias principales son que hay

  1. A diferencia de ref que no espera que la variable a ser inicializado.
  2. cuando se usa OUT, la función llamada es responsable de asignar el valor no llamado.
Cuestiones relacionadas