Así que soy nuevo en C# y estoy teniendo dificultades para comprender out
. En lugar de sólo devolver algo de una funciónC# parámetros frente a devoluciones
using System;
class ReturnTest
{
static double CalculateArea()
{
double r=5;
double area = r * r * Math.PI;
return area;
}
static void Main()
{
double output = CalculateArea();
Console.WriteLine("The area is {0:0.00}", output);
}
}
comparar a este
using System;
class ReturnTest
{
static void CalculateArea(out double r)
{
r=5;
r= r * r * Math.PI;
}
static void Main()
{
double radius;
CalculateArea(out radius);
Console.WriteLine("The area is {0:0.00}",radius);
Console.ReadLine();
}
}
La primera de ellas es la forma por lo general lo haría. ¿Hay algún motivo por el que desee usar out
en lugar de solo una declaración de devolución? Entiendo que ref
permite la comunicación bidireccional, y que generalmente no debería usar ref
a menos que la función esté haciendo algo con la variable que estoy enviando.
Sin embargo, ¿hay alguna diferencia entre las declaraciones de salida y devolución, como se muestra arriba? Sintaxis sabia ¿hay alguna razón para favorecer a uno u otro?
Estudie 'Dictionary.TryGetValue' y' int.TryParse' y vea si esos ejemplos explican la utilidad de 'out'. –
'out' se usa principalmente cuando necesita devolver múltiples valores no relacionados de un método. Además, a menudo se usa para simular punteros cuando interopera con código nativo a través de COM o p/invoke. – dlev
Recuerde que en C/C++ tenemos punteros. Cuando pasa un puntero a una función, puede modificarla dentro de la función y el valor también cambiará en la función de llamada. hace más o menos lo mismo. – carny666