Partager via


Passage de tableaux en tant qu'arguments (Guide de programmation C#)

Les tableaux peuvent être passés en tant qu'arguments aux paramètres de méthode. Étant donné que les tableaux sont des types référence, la méthode peut modifier la valeur des éléments.

Passage de tableaux unidimensionnels en tant qu'arguments

Vous pouvez passer un tableau unidimensionnel initialisé à une méthode. Par exemple, l'instruction suivante envoie un tableau à une méthode Print.

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

Le code suivant illustre une implémentation partielle de la méthode Print.

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

Vous pouvez initialiser et passer un nouveau tableau en une seule étape, comme illustré dans l'exemple suivant.

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

Exemple

Description

Dans l'exemple suivant, un tableau de chaînes est initialisé et passé en tant qu'argument à une méthode PrintArray pour des chaînes. La méthode affiche les éléments du tableau. Ensuite, les méthodes ChangeArray et ChangeArrayElement sont appelées pour montrer que l'envoi d'un argument de tableau par valeur n'empêche pas les modifications apportées aux éléments de tableau.

Code

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

Passage de tableaux multidimensionnels en tant qu'arguments

Vous pouvez passer un tableau multidimensionnel initialisé à une méthode comme un tableau unidimensionnel.

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

Le code suivant illustre une déclaration partielle d'une méthode Print qui accepte un tableau à deux dimensions en tant qu'argument.

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

Vous pouvez initialiser et passer un nouveau tableau en une seule étape, comme illustré dans l'exemple suivant.

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

Exemple

Description

Dans l'exemple suivant, un tableau à deux dimensions d'entiers est initialisé et passé à la méthode Print2DArray. La méthode affiche les éléments du tableau.

Code

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

Voir aussi

Référence

Tableaux (guide de programmation C#)

Tableaux unidimensionnels (Guide de programmation C#)

Tableaux multidimensionnels (Guide de programmation C#)

Tableaux en escalier (Guide de programmation C#)

Concepts

Guide de programmation C#