out-Parameter

Methoden mit mehreren Rückgabeparametern

Soll eine Methode mehr als einen Parameter zurück geben, müssen entsprechende Ausgabeparameter verwendet werden. Ein Ausgabeparameter wird mit dem Schlüsselwort out übergeben.

Um einen out-Parameter zu verwenden, muss die Methodendefinition und die aufrufende Methode das Schlüsselwort out verwenden. Ein out-Parameter kann an jeder beliebigen Stelle der Methodendefinition stehen. Innerhalb der Methode muss bei den mit out gekennzeichneten Variablen zwingend ein Wert zugewiesen werden.

 

        static void Main(string[] args)
        { 
            int x;

            Method(out x);
            // x hat nun den Wert 2
        }

        static void Method(out int x)
        {
            x = 2;
        }

 

 

Das folgende Beispiel zur Berechnung des Treibstoffverbrauches zeigt die Verwendung zweier out-Parameter

 

namespace ConsoleApplication_out
{
    class Program
    {
        static void Main(string[] args)
        {
            double kosten_pro_km, verbrauch_pro_100km;

            Console.Write("Preis pro Liter Treibstoff: ");
            double preis_pro_liter = Convert.ToDouble(Console.ReadLine());

            Console.Write("Gefahrene km: ");
            int km_gefahren = Convert.ToInt32(Console.ReadLine());

            Console.Write("Treibstoffverbrauch in Liter: ");
            double liter = Convert.ToDouble(Console.ReadLine());

            Spritverbrauch(liter, preis_pro_liter, km_gefahren, out kosten_pro_km, out verbrauch_pro_100km);

            Console.WriteLine("\nTreibstoffverbrauch auf 100km: " + verbrauch_pro_100km);
            Console.WriteLine("Treibstoffkosten pro km: " + kosten_pro_km);

            Console.ReadLine();
        }

        public static void Spritverbrauch(double liter, double preis_pro_liter, int km_gefahren, out double kosten_pro_km, out double verbrauch_pro_100km)
        {
            kosten_pro_km = liter * preis_pro_liter / km_gefahren;
            verbrauch_pro_100km = liter * 100 / km_gefahren;
        }
    }
}