Gerade, wenn ein bestimmter Code-Block öfter im Programm vorkommt, lohnt sich das einbauen von Methoden in C Sharp. Dadurch wird Redundanz verringert und das Ändern erleichtert. In diesem Guide erfährst du alles zu einfachen und komplexeren Methoden.

Einfache Methoden

Um die Anwendung von Methoden zu erläutern, schauen wir uns ein Beispiel an. In unseren Beispiel soll ein Durchschnittswert von drei NumericUpDown-Werten gebildet werden, wenn sich einer dieser Werte ändert. Dieser Wert wird in einem Label als Text ausgegeben. Der Code ohne Methode zur Berechnung würde dann so aussehen:

using System;

class Program
{
    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        double value1 = Convert.ToDouble(numericUpDown1.Value);
        double value2 = Convert.ToDouble(numericUpDown2.Value);
        double value3 = Convert.ToDouble(numericUpDown3.Value);
        double average;
        average = (value1 + value2 + value3) / 3;
        label1.Text = average.ToString();
    }

    private void numericUpDown2_ValueChanged(object sender, EventArgs e)
    {
        double value1 = Convert.ToDouble(numericUpDown1.Value);
        double value2 = Convert.ToDouble(numericUpDown2.Value);
        double value3 = Convert.ToDouble(numericUpDown3.Value);
        double average;
        average = (value1 + value2 + value3) / 3;
        label1.Text = average.ToString();
    }

    private void numericUpDown3_ValueChanged(object sender, EventArgs e)
    {
        double value1 = Convert.ToDouble(numericUpDown1.Value);
        double value2 = Convert.ToDouble(numericUpDown2.Value);
        double value3 = Convert.ToDouble(numericUpDown3.Value);
        double average;
        average = (value1 + value2 + value3) / 3;
        label1.Text = average.ToString();
    }
}

Sollte sich nun die Berechnung, oder die Ausgabe des Wertes ändern, muss hier in drei Methoden eine Änderung vorgenommen werden. So können aber leicht Fehler entstehen, da Dinge übersehen werden.

Anstatt dessen empfiehlt sich die Programmierung mit einer zusätzlichen Methode, die auch einen Großteil des Textes ersetzt. Damit werden Fehlerquellen reduziert und es wirkt direkt viel aufgeräumter:

using System;

class Program
{
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            calculate();
        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            calculate();
        }

        private void numericUpDown3_ValueChanged(object sender, EventArgs e)
        {
            calculate();
        }

        public void calculate()
        {
            double value1 = Convert.ToDouble(numericUpDown1.Value);
            double value2 = Convert.ToDouble(numericUpDown2.Value);
            double value3 = Convert.ToDouble(numericUpDown3.Value);
            double average;
            average = (value1 + value2 + value3) / 3;
            label1.Text = average.ToString();
        }
}

Komplexere Methoden

Baut man eine Methode komplexer auf, kann diese auch Variablen enthalten und einen Wert mit "return" an den Methodenaufruf zurückgeben. Der wesentliche Unterschied ist hier, dass das "void" in der Methode durch den Variablentyp ersetzt wird (z.B. int).

Beispiel 1: Ganze Zahlen verdoppeln

Nehmen wir noch ein neues Beispiel. Hier wird nun eine Nummer (integer) vorgegeben, diese soll verdoppelt werden. Als Ausgabe möchten wir die ursprüngliche Nummer und das Ergebnis der Verdopplung in die Konsole schreiben.

using System;

class Program
{
    static void Main()
    {
        int myNumber = 10;
        int result = DoubleNumber(myNumber);

        Console.WriteLine("Das Doppelte von " + myNumber + " ist " + result);
    }

    static int DoubleNumber(int number)
    {
        return number * 2;
    }
}

Beim Methodenaufruf mit DoubleNumber(10) wird der Integer 10 an die Methode übergeben. Diese wird nun ausgeführt und berechnet 10*2=20. Mit return wird die 20 nun zurückgegeben an den Methodenaufruf. Das "int" nach static in der Methode sagt uns, dass das Ergebnis ebenfalls ein Integer ist.

Bei der Ausgabe wird nun int result = 20 ausgegeben. Diesen Wert hat der Methodenaufruf zuvor von der Methode zurückerhalten. Damit schreibt das Programm nun in die Konsole: "Das Doppelte von 10 ist 20".

Beispiel 2: Ganze Zahlen addieren

In diesem Beispiel sollen zwei vorgegebene Zahlen (Integer) addiert werden. Dazu wird bei der Deklaration der Variable sum der Methodenaufruf namens "Add" zugewiesen. In diesem Fall werden gleich mehrere Variablen an die Methode übergeben.

In der Methode werden nun beide Integer addiert und mit Return an den Methodenaufruf zurückgegeben. In die Konsole schreibt das Programm nun folgendes: "5 + 10 = 15"

using System;

class Program
{
    static void Main()
    {
        int num1 = 5;
        int num2 = 10;
        
        int sum = Add(num1, num2);

        Console.WriteLine($"{num1} + {num2} = {sum}");
    }

    static int Add(int a, int b)
    {
        return a + b;
    }
}

Durch dieses Beispiel siehst du, wie auch mit mehreren Variablen in einer Methode in C# gearbeitet werden kann.