2010-11-15 12 views

Respuesta

4

Sugeriría echar un vistazo a los métodos TryParse en los tipos incorporados como int. El valor de retorno es un bool para indicar el éxito, mientras que el valor se devuelve a través de un parámetro de salida. Esta construcción hace que sea útil llamar a este método en una construcción de bucle donde otro tipo de retorno podría/podría complicarlo un poco más.

En una mayor reflexión, una con podría ser una tendencia a seguir agregando parámetros a un método en lugar de encapsular la lógica.

+0

¿desea saber por qué el retorno booleano es bueno en el ciclo? ¿Puedes dar un ejemplo? – user496949

+0

@ user496949 - con los métodos TryParse, puede manejar una falla al analizar de forma bastante simple al observar el retorno del método. Eso le ahorra intentar manejar la excepción de análisis o buscar algo que indique que el valor resultante es de alguna manera inválido. Considere un booleano como probablemente el ejemplo más simple. Aparte de una excepción, ¿cómo sabría uno que el valor resultante era "inválido"? Con tryParse, el método en sí mismo indica éxito, y el valor resultante se analizó correctamente a un nuevo valor o permanece como estaba antes de llamar al método. – Steven

+0

Creo que te encuentras con el mayor inconveniente. Por lo que puedo decir, todos los param. requiere el mantenimiento de otra variable por el objeto que invoca el método. No es "un gran problema" eliminar un par de variables adicionales en el camino, pero sí tiene un gran potencial para volverse innecesariamente engorroso, cuando el método puede fácilmente (y probablemente más propiamente) encapsular toda esa información en su valor devuelto – Steven

0

Como usted ha dicho, sin parámetro de salida, sólo se puede devolver un valor, fuera de palabras clave le permiten "retorno" más de un valor

0

En C# no se puede devolver múltiples variables, por lo que podría hacer el trabajo utilizando el parámetro out, si no quieres pasar por una clase (devuelve una clase con esas variables múltiples).

6

Los parámetros de salida le permiten devolver valores múltiples desde un método, y esto generalmente es preferible a devolver una estructura o tupla arbitraria que contenga valores múltiples.

Se podría argumentar que es más fácil pasar por alto los posibles efectos secundarios de una función que utiliza un parámetro de salida, ya que se aparta del modelo tradicional de "parámetros múltiples, un valor de retorno". Pero, sinceramente, creo que la palabra clave out junto con una condición posterior al método hace que la intención del programador sea bastante clara.

+1

No estoy seguro de estar de acuerdo con la idea de que, en general, es preferible tener valores de "salida" en lugar de objetos de retorno, pero tal vez es porque no estoy interpretando de forma arbitraria como pretendía. Para mí, una colección de valores devueltos (propiedades con un solo objeto de devolución) generalmente proporciona más flexibilidad que una lista de variables que deben declararse y mantenerse, pero estoy de acuerdo en que hay buenos casos para ambas situaciones. Parecen tener perfecto sentido en los métodos de tipo TryParse, donde, estoy de acuerdo, una estructura "especial" de + bool (¿éxito?) Parece exagerada. – Steven

Cuestiones relacionadas