Передача массивов в качестве аргументов (руководство по программированию на C#)Passing arrays as arguments (C# Programming Guide)

Массивы можно передавать в качестве аргументов в параметры метода.Arrays can be passed as arguments to method parameters. Поскольку массивы представляют собой ссылочные типы, метод может изменять значения элементов.Because arrays are reference types, the method can change the value of the elements.

Передача одномерных массивов в качестве аргументовPassing single-dimensional arrays as arguments

Инициализированный одномерный массив можно передать в метод.You can pass an initialized single-dimensional array to a method. Например, следующий оператор передает массив в метод печати.For example, the following statement sends an array to a print method.

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

В следующем примере кода показана разделяемая реализация метода печати.The following code shows a partial implementation of the print method.

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

Новый массив можно инициализировать и передать за один шаг, как показано в следующем примере.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 });

ПримерExample

В следующем примере массив строк инициализируется и передается в качестве аргумента в метод DisplayArray для строк.In the following example, an array of strings is initialized and passed as an argument to a DisplayArray method for strings. Этот метод отображает элементы массива.The method displays the elements of the array. Затем метод ChangeArray размещает элементы массива в обратном порядке, а метод ChangeArrayElements изменяет первые три элемента массива.Next, the ChangeArray method reverses the array elements, and then the ChangeArrayElements method modifies the first three elements of the array. После возврата каждого метода метод DisplayArray показывает, что передача массива по значению не препятствует изменению элементов массива.After each method returns, the DisplayArray method shows that passing an array by value doesn't prevent changes to the array elements.

using System;

class ArrayExample
{
    static void DisplayArray(string[] arr) => Console.WriteLine(string.Join(" ", arr));

    // Change the array by reversing its elements.
    static void ChangeArray(string[] arr) => Array.Reverse(arr);

    static void ChangeArrayElements(string[] arr)
    {
        // Change the value of the first three array elements. 
        arr[0] = "Mon";
        arr[1] = "Wed";
        arr[2] = "Fri";
    }

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

        // Reverse the array.
        ChangeArray(weekDays);
        // Display the array again to verify that it stays reversed.
        Console.WriteLine("Array weekDays after the call to ChangeArray:");
        DisplayArray(weekDays);
        Console.WriteLine();

        // Assign new values to individual array elements.
        ChangeArrayElements(weekDays);
        // Display the array again to verify that it has changed.
        Console.WriteLine("Array weekDays after the call to ChangeArrayElements:");
        DisplayArray(weekDays);
    }
}
// The example displays the following output: 
//         Sun Mon Tue Wed Thu Fri Sat
//
//        Array weekDays after the call to ChangeArray:
//        Sat Fri Thu Wed Tue Mon Sun
//
//        Array weekDays after the call to ChangeArrayElements:
//        Mon Wed Fri Wed Tue Mon Sun

Передача многомерных массивов в качестве аргументовPassing multidimensional arrays as arguments

Инициализированный многомерный массив можно передать в метод так же, как и одномерный массив.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);

В следующем коде показано разделяемое объявление метода печати, который принимает в качестве аргумента двухмерный массив.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.
}

Новый массив можно инициализировать и передать за один шаг, как показано в следующем примере.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 } });

ПримерExample

В следующем примере инициализируется двухмерный массив целых чисел, который передается в метод Print2DArray.In the following example, a two-dimensional array of integers is initialized and passed to the Print2DArray method. Этот метод отображает элементы массива.The method displays the elements of the array.

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
    */

См. такжеSee also