Partager via


Tableaux (C# et Java)

Mise à jour : novembre 2007

Les tableaux sont des collections ordonnées d'éléments de même type de données auxquels on accède en utilisant le nom du tableau conjointement au décalage de l'élément voulu par rapport au début du tableau. Il existe des différences importantes dans la manière avec laquelle les tableaux sont déclarés et utilisés en C# par rapport à Java.

Tableaux unidimensionnels

Un tableau unidimensionnel stocke un nombre fixe d'éléments de manière linéaire et ne nécessite qu'une seule valeur d'index pour identifier un élément. En C#, des crochets doivent suivre le type de données dans la déclaration de tableau et ne peuvent pas être placés après le nom de variable comme cela est autorisé en Java. Ainsi, un tableau de type integers est déclaré à l'aide de la syntaxe suivante :

int[] arr1;

La déclaration suivante n'est pas valide en C#:

//int arr2[];  //compile error

Une fois que vous avez déclaré un tableau, vous utilisez le mot clé new pour définir sa taille, exactement comme en Java. L'exemple suivant déclare la référence de tableau :

int[] arr;
arr = new int[5];  // create a 5 element integer array

Vous accédez ensuite aux éléments dans un tableau unidimensionnel à l'aide d'une syntaxe identique à Java. Les indices de tableau C# sont également de base zéro. Le code suivant permet d'accéder au dernier élément du tableau précédent :

System.Console.WriteLine(arr[4]);  // access the 5th element

Initialisation

Les éléments de tableau C# peuvent être initialisés au moment de la création à l'aide de la même syntaxe qu'en Java :

int[] arr2Lines;
arr2Lines = new int[5] {1, 2, 3, 4, 5};

Contrairement à Java, le nombre d'initialiseurs C# doit correspondre exactement à la taille de tableau. Vous pouvez utiliser cette fonctionnalité pour déclarer et initialiser un tableau C# dans une seule ligne :

int[] arr1Line = {1, 2, 3, 4, 5};

Cette syntaxe crée un tableau de taille égale au nombre d'initialiseurs.

Initialisation dans une boucle de programme

L'autre manière d'initialiser un tableau en C# consiste à utiliser la boucle for. La boucle suivante affecte la valeur zéro à chaque élément d'un tableau :

int[] TaxRates = new int[5];

for (int i=0; i<TaxRates.Length; i++)
{
    TaxRates[i] = 0;
}

Tableaux en escalier

C# et Java prennent tous deux en charge la création de tableaux en escalier, ou non rectangulaire, dans lesquels chaque ligne contient un nombre différent de colonnes. Par exemple, le tableau en escalier suivant présente quatre entrées dans la première ligne, et trois dans la seconde :

int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];

Tableaux multidimensionnels

Avec C#, vous pouvez créer des tableaux multidimensionnels normaux qui sont comme une matrice de valeurs du même type. Si Java et C# prennent tous deux en charge les tableaux en escalier, C# prend également en charge les tableaux multidimensionnels ou tableaux de tableaux.

Déclarez un tableau rectangulaire multidimensionnel à l'aide de la syntaxe suivante :

int[,] arr2D;      // declare the array reference
float[,,,] arr4D;  // declare the array reference

Une fois le tableau déclaré, vous pouvez lui allouer de la mémoire comme suit :

arr2D = new int[5,4];  // allocate space for 5 x 4 integers

Vous accédez ensuite aux éléments du tableau à l'aide de la syntaxe suivante :

arr2D[4,3] = 906;

Étant donné que les tableaux sont de base zéro, cette ligne affecte la valeur 906 à l'élément situé dans la cinquième colonne de la quatrième ligne.

Initialisation

Les tableaux multidimensionnels peuvent être créés, configurés et initialisés dans une seule instruction à l'aide de n'importe quelle méthode suivante :

int[,] arr4 = new int [2,3] { {1,2,3}, {4,5,6} };
int[,] arr5 = new int [,]   { {1,2,3}, {4,5,6} };
int[,] arr6 =               { {1,2,3}, {4,5,6} };

Initialisation dans une boucle de programme

Tous les éléments d'un tableau peuvent être initialisés à l'aide d'une boucle imbriquée comme suit :

int[,] arr7 = new int[5,4];

for(int i=0; i<5; i++)
{
    for(int j=0; i<4; j++)
    {
        arr7[i,j] = 0;  // initialize each element to zero
    }
}

La classe System.Array

Dans le .NET Framework, les tableaux sont implémentés comme des instances de la classe Array. Cette classe fournit plusieurs méthodes utiles, telles que Sort et Reverse.

L'exemple suivant montre combien ces méthodes sont simples d'utilisation. En premier lieu, vous inversez les éléments d'un tableau à l'aide de la méthode Reverse, puis, vous les triez avec la méthode Sort :

class ArrayMethods
{
    static void Main()
    {
        // Create a string array of size 5:
        string[] employeeNames = new string[5];

        // Read 5 employee names from user:
        System.Console.WriteLine("Enter five employee names:");
        for(int i=0; i<employeeNames.Length; i++)
        {
            employeeNames[i]= System.Console.ReadLine();
        }

        // Print the array in original order:
        System.Console.WriteLine("\nArray in Original Order:");
        foreach(string employeeName in employeeNames)
        {
            System.Console.Write("{0}  ", employeeName);
        }

        // Reverse the array:
        System.Array.Reverse(employeeNames);

        // Print the array in reverse order:
        System.Console.WriteLine("\n\nArray in Reverse Order:");
        foreach(string employeeName in employeeNames)
        {
            System.Console.Write("{0}  ", employeeName);
        }

        // Sort the array:
        System.Array.Sort(employeeNames);

        //  Print the array in sorted order:
        System.Console.WriteLine("\n\nArray in Sorted Order:");
        foreach(string employeeName in employeeNames)
        {
            System.Console.Write("{0}  ", employeeName);
        }
    }
}

Sortie

Enter five employee names:

Luca

Angie

Brian

Kent

Beatriz

Array in Original Order:

Luca Angie Brian Kent Beatriz

Array in Reverse Order:

Beatriz Kent Brian Angie Luca

Array in Sorted Order:

Angie Beatriz Brian Kent Luca

Voir aussi

Concepts

Guide de programmation C#

Référence

Tableaux (Guide de programmation C#)

Autres ressources

Langage de programmation C# pour les développeurs Java