Übergeben von Parametern (C#-Programmierhandbuch)Passing Parameters (C# Programming Guide)

In C# können Argumente an Parameter entweder als Wert oder als Verweis übergeben werden.In C#, arguments can be passed to parameters either by value or by reference. Durch die Übergabe als Verweis können Funktionsmember, Methoden, Eigenschaften, Indexer, Operatoren und Konstruktoren den Wert der Parameter ändern und behalten diese Änderung in der aufrufenden Umgebung bei.Passing by reference enables function members, methods, properties, indexers, operators, and constructors to change the value of the parameters and have that change persist in the calling environment. Wenn Sie den Wert ändern und darum den Parameter pro Verweis übergeben möchten, verwenden Sie die Schlüsselwörter ref oder out.To pass a parameter by reference with the intent of changing the value, use the ref, or out keyword. Wenn Sie den Wert zwar ändern, aber keine Kopie erstellen möchten, und darum den Parameter pro Verweis übergeben möchten, verwenden Sie den Modifizierer in.To pass by reference with the intent of avoiding copying but not changing the value, use the in modifier. Der Einfachheit halber wird in den Beispielen in diesem Thema nur das Schlüsselwort ref verwendet.For simplicity, only the ref keyword is used in the examples in this topic. Weitere Informationen zu den Unterschieden zwischen in, ref und out finden Sie unter in, ref, out und Übergeben von Arrays mithilfe von „ref“ und „out“.For more information about the difference between in, ref, and out, see in, ref, out, and Passing Arrays Using ref and out.

Das folgende Beispiel veranschaulicht die Unterschiede zwischen Wert- und Verweisparametern.The following example illustrates the difference between value and reference parameters.

class Program
{
    static void Main(string[] args)
    {
        int arg;

        // Passing by value.
        // The value of arg in Main is not changed.
        arg = 4;
        squareVal(arg);
        Console.WriteLine(arg);
        // Output: 4

        // Passing by reference.
        // The value of arg in Main is changed.
        arg = 4;
        squareRef(ref arg);
        Console.WriteLine(arg);
        // Output: 16 
    }

    static void squareVal(int valParameter)
    {
        valParameter *= valParameter;
    }

    // Passing by reference
    static void squareRef(ref int refParameter)
    {
        refParameter *= refParameter;
    }
}

Weitere Informationen finden Sie unter den folgenden Themen:For more information, see the following topics:

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
MethodenMethods