Bonsoir à tous
Je me posais une question
Est-il possible de redimensionner un tableau quelconque en C#.
Merci pour vos réponses.
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.
" Entre le Savoir et le Pouvoir, il y a le Vouloir "
Desole pour les accents, je suis en QWERTY...
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager