# Programmation C sharp/Les tableaux

Un tableau regroupe plusieurs données d'un même type, dans un ensemble ordonné et indicé par un entier. En C#, comme avec la plupart des langages de programmation modernes, le premier élément porte l'indice 0.

## Déclaration d'un tableau

Les crochets ajoutés à la fin d'un type indique qu'il s'agit d'un tableau.
Exemple :
La variable entiers est un tableau de nombres entiers. Le nombre d'éléments du tableau n'est pas spécifié à la déclaration, mais lors de l'allocation du tableau.

## Allocation d'un tableau

Les tableaux font partie des types références. Il n'est donc pas alloué par défaut (référence null). L'allocation se fait en utilisant le mot clé new et en spécifiant le nombre d'éléments entre crochets après le type :
Exemple :
Il est également possible de l'allouer ailleurs que dans la déclaration :
Une fois la place du tableau réservée en mémoire, celui-ci ne contient que des valeurs par défaut, c'est à dire que chaque élément d'un tableau de numériques (entiers, réels, ...) vaut 0, pour un tableau de bool chaque élément vaut false, et pour un tableau de références (objet, interface, tableau) chaque élément vaut null.

## Pré-initialisation

Il est également possible de définir directement les valeurs que le tableau contient. Ces valeurs doivent être comprises entre des accolades et séparées par une virgule. Le compilateur détermine le nombre d'éléments à allouer d'après la liste d'éléments spécifiée à la suite de l'instruction d'allocation.
Exemples :
* À la déclaration du tableau :
* Hors déclaration :
Seule la déclaration peut omettre l'instruction d'allocation du tableau avant les accolades :
Dans ce cas, le compilateur alloue implicitement un tableau du même type que la variable déclarée, pour le nombre d'éléments placés entre les accolades.

## Accès aux éléments

L'accés (lecture et écriture) aux éléments du tableau se fait en utilisant le nom du tableau suivi des crochets encadrant l'indice de l'élément accédé :
L'indice spécifié est en fait une expression. Il est donc possible d'utiliser une variable comme indice, par exemple, pour parcourir les éléments du tableau :

## Taille d'un tableau

L'attribut Length donne la taille du tableau. Ce qui est pratique pour le parcourir :
Si l'indice n'est pas nécessaire durant le parcours du tableau, il est plus simple d'utiliser foreach :

## Tableaux multi-dimensionnels

Les tableaux vus jusqu'à présent étaient des tableaux uni-dimensionnels : ils n'ont qu'une seule dimension, c'est à dire un seul indice.
Certaines applications nécessitent des tableaux à deux indices ou davantage. Par exemple, une image est représentée par un tableau de couleurs indicé par l'abscisse (x) et l'ordonnée (y).
Un tableau multi-dimensionnel utilise la même syntaxe, en séparant les indices par une virgule.
Un tableau de tableaux (appelé jagged array ou tableau déchiqueté) utilise la syntaxe des tableaux uni-dimensionnels en utilisant un tableau comme type de base :
Chacun des sous-tableaux doit être alloué séparément, et rien n'oblige à ce qu'ils aient tous la même dimension (d'où l'appellation de tableau déchiqueté).
Il est également possible de combiner les possibilités :