Tableaux et collections (Visual C# Express)

Mise à jour : novembre 2007

Le stockage de groupes d'éléments de données connexes est une condition requise de la plupart des logiciels ; les deux principaux moyens de procéder sont les tableaux et les collections.

Tableaux

Les tableaux sont des collections d'objets du même type. Comme des tableaux peuvent avoir pratiquement n'importe quelle longueur, ce qui signifie qu'ils peuvent servir à stocker des milliers, voire des millions d'objets, mais leur taille doit être décidée au moment de la création des tableaux. On accède à chaque élément du tableau par un index, qui est simplement un nombre qui indique la position ou l'emplacement où l'objet est stocké dans le tableau. Les tableaux permettent de stocker des Types référence et des Types valeur.

Tableaux unidimensionnels

Un tableau est une collection indexée d'objets. Un tableau unidimensionnel d'objets se déclare de la façon suivante :

type[] arrayName;

Souvent, vous initialisez les éléments dans le tableau en même temps, comme suit :

int[] array = new int[5];

La valeur par défaut d'éléments de tableau numériques est zéro, et les éléments de référence prennent par défaut la valeur null, mais vous pouvez initialiser des valeurs pendant la création d'un tableau, comme suit :

int[] array1 = new int[] { 1, 3, 5, 7, 9 };

Ou même comme cela :

int[] array2 = {1, 3, 5, 7, 9};

Les tableaux utilisent des index de base zéro, de sorte que le premier élément du tableau est l'élément 0.

string[] days = {"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat"};
System.Console.WriteLine(days[0]);  // Outputs "Sun"

Tableaux multidimensionnels

Conceptuellement, un tableau multidimensionnel à deux dimensions ressemble à une grille. Un tableau multidimensionnel à trois dimensions ressemble à un cube.

// declare multidimension array (two dimensions)
int[,] array2D = new int[2,3];


// declare and initialize multidimension array
int[,] array2D2 = { {1, 2, 3}, {4, 5, 6} };


// write elements in a multidimensional array
for (int i=0; i<2; i++)
{
    for (int j=0; j<3; j++)
    {
        array2D[i,j] = (i + 1) * (j + 1);
    }
}


// read elements in a multidimensional array
for (int i=0; i<2; i++)
{
    for (int j=0; j<3; j++)
    {
        System.Console.Write(array2D[i,j]);
    }
    System.Console.WriteLine();
}

Tableaux en escalier

Une variante du tableau multidimensionnel est le tableau en escalier : un tableau de tableaux. Un tableau en escalier est un tableau unidimensionnel, chaque élément étant lui-même un tableau. Il n'est pas nécessaire que les tableaux d'éléments soient tous de la même taille.

Un tableau en escalier se déclare comme ceci :

int[][] jaggedArray = new int[3][];

Vous créez ainsi un tableau de trois tableaux. Ces tableaux peuvent être initialisés comme suit :

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

Utilisation de l'instruction foreach

L'instruction foreach est souvent utilisée pour accéder à chaque élément stocké dans un tableau :

int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{
    System.Console.Write("{0} ", i);
}
//Output: 4 5 6 1 2 3 -2 -1 0

Tableaux d'objets

Créer un tableau d'objets, plutôt qu'un tableau de types de données simples tel que des entiers, est un processus bipartite. En premier lieu, vous déclarez le tableau, puis, vous devez créer les objets qui sont stockés dans le tableau. Cet exemple crée une classe qui définit un CD audio. Il crée ensuite un tableau qui stocke 20 CD audio.

namespace CDCollection
{
    // Define a CD type.
    class CD
    {
        private string album;
        private string artist;
        private int rating;

        public string Album
        {
            get {return album;}
            set {album = value;} 
        }
        public string Artist
        {
            get {return artist;}
            set {artist = value;}
        }
        public int Rating
        { 
            get {return rating;} 
            set {rating = value;} 
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Create the array to store the CDs.
            CD[] cdLibrary = new CD[20];

            // Populate the CD library with CD objects.
            for (int i=0; i<20; i++)
            {
                cdLibrary[i] = new CD();
            }

            // Assign details to the first album.
            cdLibrary[0].Album = "See";
            cdLibrary[0].Artist = "The Sharp Band";
            cdLibrary[0].Rating = 10;
        }
    }
}

Collections

Le tableau est simplement l'une des nombreuses options de stockage de groupes de données à l'aide de C#. L'option que vous sélectionnez dépend de plusieurs facteurs, comme la façon dont vous projetez de manipuler les éléments ou d'y accéder. Par exemple, une liste est généralement plus rapide qu'un tableau si vous devez insérer des éléments au début ou au milieu de la collection. D'autres types de classes de collection incluent un mappage, une arborescence et une pile ; chacun présentant des avantages. Pour plus d'informations, consultez System.Collections et System.Collections.Generic.

L'exemple suivant montre comment utiliser la classe List<T>. Remarquez que, contrairement à la classe Array, les éléments peuvent être insérés au milieu de la liste. Cet exemple restreint les éléments de la liste, qui doivent être des chaînes.

public class TestCollections
{
    public static void TestList()
    {
        System.Collections.Generic.List<string> sandwich = new System.Collections.Generic.List<string>();

        sandwich.Add("bacon");
        sandwich.Add("tomato");

        sandwich.Insert(1, "lettuce");

        foreach (string ingredient in sandwich)
        {
            System.Console.WriteLine(ingredient);            
        }
    }
}

Voir aussi

Tâches

Comment : déclarer un tableau (Visual C#)

Comment : passer des tableaux d'objets à des méthodes (Visual C#)

Comment : parcourir un tableau (Visual C#)

Comment : initialiser un tableau (Visual C#)

Comment : parcourir une collection (Visual C#)

Concepts

Initiation au langage C#

Référence

Tableaux (Guide de programmation C#)

Classes de collection (Guide de programmation C#)

Introduction aux génériques (Guide de programmation C#)

Array