Maison > développement back-end > Tutoriel C#.Net > Explication détaillée de la différence entre Array et ArrayList en C#

Explication détaillée de la différence entre Array et ArrayList en C#

黄舟
Libérer: 2017-03-28 11:44:20
original
1870 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée et les différences entre Array et ArrayList en C# Les amis dans le besoin peuvent se référer à

C# Explication détaillée et. différence entre Array et ArrayList

1. Utilisation de Array

  type[]  typename=new type[size];
Copier après la connexion

ou

 type[]  typename=new type[]{ };
Copier après la connexion

Type de tableauVariables doit être instancié en même temps que la déclaration (s'il est initialisé, au moins la taille du tableau doit être initialisé)

Habituellement, nous int[], string[]... En fait Déclarez un tableau tableau

Par exemple :

 string [] srt=new string[]{"a","b"};

     int[] a=new int[2]; string [] srt=new string[3];
Copier après la connexion

(1):typedata type ne peut pas manquer et doit être ; unifié, mais pas C'est comme int[] a=new Array[];

(2) : La taille du tableau ne peut pas manquer, sinon C# pensera que c'est une erreur car le tableau est un fixe -length memory;

(3) : Le côté droit est un crochet [] au lieu de ()

Remarque : array array ne fournit pas les méthodes add, clear, addRange.., mais définit ou obtient directement la valeur

Par exemple : a[0] = 0; a[1] = 1;

2. Utilisation de C# ArrayList :

var arrayList = new ArrayList();

      arrayList.Add(1);
      arrayList.Add(2);
      arrayList.Add(50.0); //在.net 4.0 支持。具体为什么还没有研究 
      foreach (var array in arrayList)
      {
        Console.WriteLine(array);
      }
Copier après la connexion

3. La conversion entre ArrayList et Array

 var arrayList = new List<int>();
      arrayList.Add(1);
      arrayList.Add(2);
      arrayList.Add(50);

      //ArrayList 数组中的值拷贝到Array中去
      int[] array1=new int[arrayList.Count];
      arrayList.CopyTo(array1); //方法一
      int[] array2 = arrayList.ToArray(); //方法二
Copier après la connexion

4. 🎜>

# 1. Les variables de type tableau doivent être instanciées en même temps qu'elles sont déclarées (au moins la taille du tableau doit être initialisée), tandis qu'ArrayList peut simplement être déclaré en premier.


Par exemple :

int[] array = new array[3];
 或 int[] array = {1,2,3};
 或 ArrayList myList = new ArrayList();
Copier après la connexion
Ceux-ci sont tous légaux, mais utiliser directement le tableau int[] ;

#2. Array ne peut stocker que des

objets homogènes, tandis qu'ArrayList peut stocker des objets hétérogènes.

Les objets isomorphes font référence à des objets du même type. Si un tableau est déclaré comme int[], il ne peut stocker que des données entières, et string[] ne peut stocker que des

données de caractères<🎜. > , sauf les tableaux déclarés comme object[].
ArrayList peut stocker différents types de données (car il stocke des objets Objet encadrés. En fait, ArrayList utilise "object[] _items;" en interne) des champs privés pour encapsuler des objets)

#3 Méthode de stockage dans la paire gérée CLR


Le tableau est toujours stocké en continu, tandis qu'ArrayList n'est pas nécessairement stocké en continu.

#4 Taille d'initialisation


L'initialisation de l'objet Array

ne doit être que d'une taille spécifiée, et la taille du tableau après création est fixe,
La taille d'ArrayList peut être spécifiée dynamiquement, et sa taille peut être spécifiée lors de l'initialisation ou non spécifiée, ce qui signifie que l'espace de l'objet peut être augmenté arbitrairement.

#5 Array ne peut pas ajouter et supprimer des éléments à volonté, tandis qu'ArrayList peut insérer et supprimer des éléments à n'importe quelle position.

5. [Similarités entre Array et ArrayList]

#1 Les deux ont des index, c'est-à-dire que n'importe quel élément peut être directement obtenu et modifié via l'index.

#2 Les objets qu'ils créent sont placés dans le tas géré.

#3 peuvent tous s'énumérer (car ils implémentent tous l'interface IEnumerable).

6. [Quelques fonctionnalités d'ArrayList]

Lorsque la taille est de 2, la "capacité actuelle" dans le résultat de sortie est de 2,
var arrayList = new List<int>(2);
 Console.WriteLine(arrayList.Capacity);
      
      int size = 2;
      for (int i = 0; i < size; i++)
      {
        arrayList.Add(i);
      }
   
      Console.WriteLine("compressed capacity:"+arrayList.Capacity);
Copier après la connexion
Quand Lorsque la taille est de 3 ou 4, la « capacité actuelle » est de 4,

Lorsque la taille est de 5 à 8, la « capacité actuelle » est de 8,
Lorsque la taille est de 9 à 16, la « capacité actuelle » est de 16,

Une conclusion peut être tirée par des expériences, c'est-à-dire que chaque fois que le nombre réel d'objets dans ArrayList (ArrayList.Count) dépasse son propre seuil de capacité, le seuil doublera automatiquement

Sortie :
 ArrayList myList = new ArrayList(5);

      for (int i = 0; i < 3; i++)
      {
        myList.Add(i);
      }
      Console.WriteLine("actual capacity:" + myList.Capacity);
      myList.TrimToSize();
      Console.WriteLine("compressed capacity:" + myList.Capacity);
      
      Console.ReadLine();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal