Übergeben von Arrays als Argumente (C#-Programmierhandbuch)Passing Arrays as Arguments (C# Programming Guide)

Arrays können als Argumente an Methodenparameter übergeben werden.Arrays can be passed as arguments to method parameters. Da es sich bei Arrays um Verweistypen handelt, kann die Methode den Wert der Elemente ändern.Because arrays are reference types, the method can change the value of the elements.

Übergeben von eindimensionalen Arrays als ArgumentePassing Single-Dimensional Arrays As Arguments

Sie können ein initialisiertes eindimensionales Array an eine Methode übergeben.You can pass an initialized single-dimensional array to a method. Die folgende Anweisung sendet z.B. ein Array an eine print-Methode.For example, the following statement sends an array to a print method.

int[] theArray = { 1, 3, 5, 7, 9 };
PrintArray(theArray);

Im folgenden Code wird eine partielle Implementierung der print-Methode veranschaulicht.The following code shows a partial implementation of the print method.

void PrintArray(int[] arr)
{
    // Method code.
}

Sie können einen neuen Array in einem Schritt initialisieren und übergeben, wie im folgenden Beispiel gezeigt.You can initialize and pass a new array in one step, as is shown in the following example.

PrintArray(new int[] { 1, 3, 5, 7, 9 });

BeispielExample

BeschreibungDescription

Im folgenden Beispiel wird ein Array von Zeichenfolgen initialisiert und als Argument an eine PrintArray-Methode für Zeichenfolgen übergeben.In the following example, an array of strings is initialized and passed as an argument to a PrintArray method for strings. Die Methode zeigt die Elemente des Arrays an.The method displays the elements of the array. Als Nächstes werden die Methoden ChangeArray und ChangeArrayElement aufgerufen, um zu veranschaulichen, dass das Senden eines Arrayarguments nach Wert keine Änderungen an den Arrayelementen verhindert.Next, methods ChangeArray and ChangeArrayElement are called to demonstrate that sending an array argument by value does not prevent changes to the array elements.

CodeCode

class ArrayClass
{
    static void PrintArray(string[] arr)
    {
        for (int i = 0; i < arr.Length; i++)
        {
            System.Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " " : "");
        }
        System.Console.WriteLine();
    }

    static void ChangeArray(string[] arr)
    {
        // The following attempt to reverse the array does not persist when
        // the method returns, because arr is a value parameter.
        arr = (arr.Reverse()).ToArray();
        // The following statement displays Sat as the first element in the array.
        System.Console.WriteLine("arr[0] is {0} in ChangeArray.", arr[0]);
    }

    static void ChangeArrayElements(string[] arr)
    {
        // The following assignments change the value of individual array 
        // elements. 
        arr[0] = "Sat";
        arr[1] = "Fri";
        arr[2] = "Thu";
        // The following statement again displays Sat as the first element
        // in the array arr, inside the called method.
        System.Console.WriteLine("arr[0] is {0} in ChangeArrayElements.", arr[0]);
    }

    static void Main()
    {
        // Declare and initialize an array.
        string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

        // Pass the array as an argument to PrintArray.
        PrintArray(weekDays);

        // ChangeArray tries to change the array by assigning something new
        // to the array in the method. 
        ChangeArray(weekDays);

        // Print the array again, to verify that it has not been changed.
        System.Console.WriteLine("Array weekDays after the call to ChangeArray:");
        PrintArray(weekDays);
        System.Console.WriteLine();

        // ChangeArrayElements assigns new values to individual array
        // elements.
        ChangeArrayElements(weekDays);

        // The changes to individual elements persist after the method returns.
        // Print the array, to verify that it has been changed.
        System.Console.WriteLine("Array weekDays after the call to ChangeArrayElements:");
        PrintArray(weekDays);
    }
}
// Output: 
// Sun Mon Tue Wed Thu Fri Sat
// arr[0] is Sat in ChangeArray.
// Array weekDays after the call to ChangeArray:
// Sun Mon Tue Wed Thu Fri Sat
// 
// arr[0] is Sat in ChangeArrayElements.
// Array weekDays after the call to ChangeArrayElements:
// Sat Fri Thu Wed Thu Fri Sat

Übergeben von mehrdimensionalen Arrays als ArgumentePassing Multidimensional Arrays As Arguments

Sie können ein initialisiertes mehrdimensionales Array genauso wie Sie ein eindimensionales Array an eine Methode übergeben.You pass an initialized multidimensional array to a method in the same way that you pass a one-dimensional array.

int[,] theArray = { { 1, 2 }, { 2, 3 }, { 3, 4 } };
Print2DArray(theArray);

Der folgende Code zeigt eine partielle Deklaration einer print-Methode, die ein zweidimensionales Array als Argument akzeptiert.The following code shows a partial declaration of a print method that accepts a two-dimensional array as its argument.

void Print2DArray(int[,] arr)
{
    // Method code.
}

Sie können einen neuen Array in einem Schritt initialisieren und übergeben, wie im folgenden Beispiel gezeigt.You can initialize and pass a new array in one step, as is shown in the following example.

Print2DArray(new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } });

BeispielExample

BeschreibungDescription

Im folgenden Beispiel wird ein zweidimensionales Array von ganzen Zahlen initialisiert und an die Print2DArray-Methode übergeben.In the following example, a two-dimensional array of integers is initialized and passed to the Print2DArray method. Die Methode zeigt die Elemente des Arrays an.The method displays the elements of the array.

CodeCode

class ArrayClass2D
{
    static void Print2DArray(int[,] arr)
    {
        // Display the array elements.
        for (int i = 0; i < arr.GetLength(0); i++)
        {
            for (int j = 0; j < arr.GetLength(1); j++)
            {
                System.Console.WriteLine("Element({0},{1})={2}", i, j, arr[i, j]);
            }
        }
    }
    static void Main()
    {
        // Pass the array as an argument.
        Print2DArray(new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } });

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
    /* Output:
        Element(0,0)=1
        Element(0,1)=2
        Element(1,0)=3
        Element(1,1)=4
        Element(2,0)=5
        Element(2,1)=6
        Element(3,0)=7
        Element(3,1)=8
    */

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
ArraysArrays
Eindimensionale ArraysSingle-Dimensional Arrays
Mehrdimensionale ArraysMultidimensional Arrays
Verzweigte ArraysJagged Arrays