Bonsoir à tous
Je me posais une question
Est-il possible de redimensionner un tableau quelconque en C#.
Merci pour vos réponses.
Version imprimable
Bonsoir à tous
Je me posais une question
Est-il possible de redimensionner un tableau quelconque en C#.
Merci pour vos réponses.
Tu peux. La fonction Array.Resize le fait sur les tableaux a 1 dimension. Pour des tableaux a n dimension, la documentation propose une fonction.
Cf documentation
Mais si tu dois souvent redimensionner un tableau, autant utiliser une liste ou autre chose.
Merci je viens de faire un essai et ça marche.
C'était juste à titre d'information, puisque j'utilise déjà List<> régulièrement. Par ailleurs je me suis toujours demandé pourquoi on appelait ça une liste alors que réellement ce n'en est pas une et que cela serait plutôt un vecteur.Code:
1
2
3
4
5
6
7
8 string[] tableau = { "Un", "deux", "trois", "quatre"}; Array.Resize(ref tableau, tableau.Length * 2); tableau[4] = "cinq"; tableau[5] = "six"; tableau[6] = "sept"; tableau[7] = "huit";
En fait c'est un peu plus subtil que ça. Ce n'est pas un vrai resize, il y aura en fait l'allocation mémoire d'un nouveau tableau et une copie des éléments sur ce second tableau. La variable est passée en référence pour recevoir l'adresse du nouveau tableau. Les List<T> elles-même fonctionnent avec un tableau interne et font un réallocation et copie pour augmenter la capacité lorsque la taille atteint la capacité actuelle et qu'on veut insérer un nouvel élément.
Code:
1
2
3
4
5
6
7
8
9 static void Main(string[] args) { var array = new[] { 1, 2, 3 };WriteLine); var refCopy = array; Console.WriteLine($"array==refCopy:{ReferenceEquals(array, refCopy)}"); Array.Resize(ref array, array.Length * 2); Console.WriteLine($"array==refCopy:{ReferenceEquals(array, refCopy)}"); Console.ReadLine(); }
Oui c'est ce que j'ai vu dans le code source. La capacité de départ est nulle si on utilise le constructeur List<>(). Dès l'ajout d'un premier élément, la capacité du tableau interne passe à 4. Et à chaque fois que l'on dépasse la capacité (en ajoutant des éléments), un nouveau tableau avec une capacité double est créé, on recopie le contenu dans le nouveau tableau.