C # - Passaggio di parametri in base all'output
Un'istruzione return può essere utilizzata per restituire un solo valore da una funzione. Tuttavia, utilizzandooutput parameters, puoi restituire due valori da una funzione. I parametri di output sono simili ai parametri di riferimento, tranne per il fatto che trasferiscono i dati fuori dal metodo piuttosto che in esso.
Il seguente esempio lo illustra:
using System;
namespace CalculatorApplication {
class NumberManipulator {
public void getValue(out int x ) {
int temp = 5;
x = temp;
}
static void Main(string[] args) {
NumberManipulator n = new NumberManipulator();
/* local variable definition */
int a = 100;
Console.WriteLine("Before method call, value of a : {0}", a);
/* calling a function to get the value */
n.getValue(out a);
Console.WriteLine("After method call, value of a : {0}", a);
Console.ReadLine();
}
}
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Before method call, value of a : 100
After method call, value of a : 5
Non è necessario assegnare un valore alla variabile fornita per il parametro di output. I parametri di output sono particolarmente utili quando è necessario restituire valori da un metodo tramite i parametri senza assegnare un valore iniziale al parametro. Segui il seguente esempio per capirlo:
using System;
namespace CalculatorApplication {
class NumberManipulator {
public void getValues(out int x, out int y ) {
Console.WriteLine("Enter the first value: ");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter the second value: ");
y = Convert.ToInt32(Console.ReadLine());
}
static void Main(string[] args) {
NumberManipulator n = new NumberManipulator();
/* local variable definition */
int a , b;
/* calling a function to get the values */
n.getValues(out a, out b);
Console.WriteLine("After method call, value of a : {0}", a);
Console.WriteLine("After method call, value of b : {0}", b);
Console.ReadLine();
}
}
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Enter the first value:
7
Enter the second value:
8
After method call, value of a : 7
After method call, value of b : 8