Quindi sono nuovo di C# e ho difficoltà a comprendere out
. Al contrario di solo ritorno qualcosa da una funzioneC# out parametri vs resi
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);
}
}
paragonabile a questo
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();
}
}
Il primo è come avrei generalmente farlo. C'è una ragione per cui potrei voler usare out
invece di una semplice dichiarazione di ritorno? Capisco che ref
consente la comunicazione a due vie e che in genere non devo usare ref
a meno che la funzione non stia facendo qualcosa con la variabile che sto inviando.
Tuttavia c'è una differenza tra le dichiarazioni di uscita e quelle di reso, come mostrato sopra? Sintassi-saggio c'è un motivo per favorire l'uno o l'altro?
Studiare 'Dictionary.TryGetValue' e' int.TryParse' e vedere se questi esempi spiegano l'utilità di 'out'. –
'out' viene utilizzato principalmente quando è necessario restituire più valori non correlati da un metodo. Inoltre, viene spesso utilizzato per simulare i puntatori quando si interpone con codice nativo tramite COM o p/invoke. – dlev
Ricorda che in C/C++ abbiamo dei puntatori. Quando si passa un puntatore a una funzione, è possibile modificarlo all'interno della funzione e il valore cambia anche nella funzione di chiamata. fuori fa più o meno la stessa cosa – carny666