Tak więc jestem nowy w C# i mam trudności ze zrozumieniem out
. A nie tylko coś powrocie z funkcjiParametry C# out vs zwraca
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);
}
}
porównać do tego
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();
}
}
Pierwszy z nich to jak bym generalnie to zrobić. Czy istnieje powód, dla którego mogę chcieć użyć out
zamiast tylko zwrotu? Rozumiem, że ref
pozwala na dwukierunkową komunikację i że generalnie nie powinienem używać ref
, chyba że funkcja coś robi ze zmienną, którą wysyłam.
Czy jest jednak różnica między instrukcjami out i return, jak pokazano powyżej? Czy jest jakaś przyczyna faworyzowania jednej lub drugiej?
Przestudiuj 'Dictionary.TryGetValue' i' int.TryParse' i sprawdź, czy te przykłady objaśniają użyteczność 'out'. –
'out' jest najczęściej używany, gdy musisz zwrócić wiele niepowiązanych wartości z metody. Jak również, jest często używany do symulacji wskaźników podczas interakcji z natywnym kodem za pośrednictwem COM lub p/invoke. – dlev
Pamiętaj w C/C++ mamy wskaźniki. Po przekazaniu wskaźnika do funkcji można go zmodyfikować w funkcji, a wartość zmieni się także w funkcji wywołującej. na zewnątrz robi prawie to samo. – carny666