C# Classe Array
La classe Array est la classe de base de tous les tableaux en C#, définie dans l'espace de noms System. La classe Array fournit diverses propriétés et méthodes pour les tableaux.
En C#, la classe Array est la classe de base de tous les tableaux, située sous l'espace de noms System.
Un tableau est une collection utilisée pour stocker un nombre fixe d'éléments du même type. Comprendre les caractéristiques et les méthodes de la classe Array est très important pour écrire des programmes C# efficaces.
Ce qui suit est une introduction détaillée à la classe Array C#, y compris ses caractéristiques, ses méthodes couramment utilisées, ses propriétés et des exemples d'utilisation.
Fonctionnalités
- Sécurité de type: Les tableaux ne peuvent stocker que des éléments d'un type spécifié, et le type est déterminé au moment de la déclaration.
- Longueur fixe: La longueur d'un tableau ne peut pas être modifiée après sa création.
- Accès par index: Les éléments d'un tableau sont accessibles par index, et l'index commence à 0.
- Prise en charge multidimensionnelle: C# prend en charge les tableaux unidimensionnels, multidimensionnels et en escalier (tableaux de tableaux).
Propriétés de la classe Array
Le tableau suivant répertorie quelques-unes des propriétés les plus couramment utilisées de la classe Array :
| Nom de l’attribut | Description | Exemple de code | Sortie |
|---|---|---|---|
| Longueur | Obtient le nombre total d’éléments dans le tableau. | int[] arr = {1, 2, 3};int length = arr.Length; | 3 |
| Rank | Obtient le rang du tableau (c’est-à-dire le nombre de dimensions du tableau). | int[,] matrix = new int[2, 3];int rank = matrix.Rank; | 2 |
| IsFixedSize | Détermine si la taille du tableau est fixe. | int[] arr = {1, 2, 3};bool fixedSize = arr.IsFixedSize; | true |
| IsReadOnly | Détermine si le tableau est en lecture seule. | int[] arr = {1, 2, 3};bool readOnly = arr.IsReadOnly; | false |
| IsSynchronized | Détermine si le tableau est thread-safe. | int[] arr = {1, 2, 3};bool sync = arr.IsSynchronized; | false |
| SyncRoot | Obtient l'objet utilisé pour synchroniser l'accès au tableau, généralement utilisé dans les opérations multithread. | int[] arr = {1, 2, 3};object syncRoot = arr.SyncRoot; | syncRoot |
Pour la liste complète des propriétés de la classe Array, veuillez vous référer à la documentation Microsoft C#.
Méthodes de la classe Array
Le tableau suivant répertorie certaines des méthodes les plus couramment utilisées dans la classe Array :
| Numéro de série | Méthodes & Description |
|---|---|
| 1 | Clair Définit une plage d'éléments d'un tableau à zéro, false ou null, selon le type d'élément. |
| 2 | Copy(Array, Array, Int32) Copie une plage d'éléments depuis le tableau en commençant au premier élément jusqu'à la position du premier élément d'un autre tableau. La longueur est spécifiée par un entier 32 bits. |
| 3 | CopyTo(Array, Int32) Copie tous les éléments du tableau unidimensionnel actuel vers une position d'index spécifiée dans un tableau unidimensionnel spécifié. L'index est spécifié par un entier 32 bits. |
| 4 | GetLength Obtient un entier 32 bits qui représente le nombre total d'éléments dans la dimension spécifiée du tableau. |
| 5 | GetLongLength Obtient un entier 64 bits qui représente le nombre total d'éléments dans la dimension spécifiée du tableau. |
| 6 | GetLowerBound Obtient la limite inférieure d'une dimension spécifiée dans le tableau. |
| 7 | GetType Obtient le type de l'instance actuelle. Hérité de Object. |
| 8 | GetUpperBound Obtient la limite supérieure d'une dimension spécifiée dans le tableau. |
| 9 | GetValue(Int32) Obtient la valeur à la position spécifiée dans un tableau unidimensionnel. L'index est spécifié par un entier 32 bits. |
| 10 | IndexOf(Array, Object) Recherche l'objet spécifié et retourne l'index de sa première occurrence dans l'ensemble du tableau unidimensionnel. |
| 11 | Reverse(Array) Inverse l'ordre des éléments dans l'ensemble du tableau unidimensionnel. |
| 12 | SetValue(Object, Int32) Définit la valeur de l'élément à la position spécifiée dans un tableau unidimensionnel. L'index est spécifié par un entier 32 bits. |
| 13 | Sort(Array) Trie les éléments dans l'ensemble du tableau unidimensionnel en utilisant l'implémentation IComparable de chaque élément du tableau. |
| 14 | ToString Retourne une chaîne qui représente l'objet actuel. Héritée de Object. |
Autres notes de référence sur les méthodes
AsReadOnly<T>(T[])
- Retourne un wrapper en lecture seule pour le tableau spécifié.
BinarySearch
BinarySearch(Array, Int32, Int32, Object, IComparer): Recherche une valeur dans un tableau trié, à l'aide duIComparerInterface.BinarySearch(Array, Int32, Int32, Object): Recherche une valeur dans un tableau trié, à l'aide deIComparableInterface.BinarySearch(Array, Object, IComparer): Recherche dans un tableau trié, à l'aide duIComparerInterface.BinarySearch(Array, Object): Recherche dans un tableau trié, à l'aide deIComparableInterface.BinarySearch<T>(T[], Int32, Int32, T, IComparer<T>): Recherche une valeur dans une plage de tableau générique, à l'aide duIComparer<T>Interface.BinarySearch<T>(T[], Int32, Int32, T): Recherche une valeur dans une plage de tableau générique, à l'aide deIComparable<T>Interface.BinarySearch<T>(T[], T, IComparer<T>): Recherche dans un tableau générique trié, à l'aide duIComparer<T>Interface.BinarySearch<T>(T[], T): Recherche dans un tableau générique trié, à l'aide deIComparable<T>Interface.
Clair
Clear(Array, Int32, Int32): Définit les éléments dans la plage spécifiée d'un tableau à leurs valeurs par défaut.Clear(Array): Efface le contenu du tableau.
Clone
- Crée une copie superficielle du tableau.
ConstrainedCopy
- Copie une plage spécifiée d'éléments du tableau source vers le tableau de destination, en garantissant que les modifications ne sont effectuées qu'après la réussite complète de l'opération de copie.
ConvertAll<TInput, TOutput>(TInput[], Converter<TInput, TOutput>)
- Convertit un tableau d'un type en un tableau d'un autre type.
Copy
Copy(Array, Array, Int32): Copie les éléments du tableau vers le tableau de destination, avec la longueur spécifiée par un entier 32 bits.Copy(Array, Array, Int64): Copie les éléments du tableau vers le tableau de destination, avec la longueur spécifiée par un entier 64 bits.Copy(Array, Int32, Array, Int32, Int32): Copie une plage spécifiée d'éléments du tableau source vers le tableau de destination.Copy(Array, Int64, Array, Int64, Int64): Copie une plage spécifiée d'éléments du tableau source vers le tableau de destination.CopyTo(Array, Int32): Copie le tableau actuel vers le tableau de destination, en spécifiant la position d'index dans le tableau de destination à laquelle commencer.CopyTo(Array, Int64): Identique à ci-dessus, avec l'index sous forme d'un entier 64 bits.
CreateInstance
CreateInstance(Type, Int32): Crée un tableau unidimensionnel du type et de la longueur spécifiés.CreateInstance(Type, Int32, Int32): Crée un tableau à deux dimensions.CreateInstance(Type, Int32, Int32, Int32): Crée un tableau à trois dimensions.CreateInstance(Type, Int32[]): Crée un tableau multidimensionnel à l'aide des dimensions spécifiées.CreateInstance(Type, Int64[]): Crée un tableau multidimensionnel à l'aide de dimensions d'entiers 64 bits.
Empty<T>
- Retourne une instance de tableau vide.
Exists<T>(T[], Predicate<T>)
- Détermine si un tableau contient des éléments qui répondent à la condition spécifiée.
Fill<T>(T[], T, Int32, Int32)
- Remplit tous les éléments d'un tableau dans la plage d'indices spécifiée avec une valeur donnée.
Fill<T>(T[], T): Remplit tous les éléments du tableau entier avec une valeur donnée.
Find
Find<T>(T[], Predicate<T>): Recherche le premier élément qui correspond aux conditions et le renvoie.FindAll<T>(T[], Predicate<T>): Renvoie tous les éléments qui correspondent aux conditions.FindIndex<T>(T[], Int32, Int32, Predicate<T>): Dans la plage spécifiée d'un tableau, renvoie l'index du premier élément qui remplit la condition.FindIndex<T>(T[], Int32, Predicate<T>): Après l'index spécifié, renvoie l'index du premier élément qui remplit la condition.FindIndex<T>(T[], Predicate<T>): Renvoie l'index du premier élément qui remplit la condition.FindLast<T>(T[], Predicate<T>): Renvoie le dernier élément qui remplit la condition.FindLastIndex<T>(T[], Int32, Int32, Predicate<T>): Dans la plage spécifiée d'un tableau, renvoie l'index du dernier élément qui remplit la condition.FindLastIndex<T>(T[], Predicate<T>): Renvoie l'index du dernier élément qui remplit la condition.
ForEach<T>(T[], Action<T>)
- Effectue l'opération spécifiée sur chaque élément du tableau.
GetEnumerator()
- Obtient l'énumérateur du tableau.
GetLength
GetLength(Int32): Obtient le nombre d'éléments dans la dimension spécifiée d'un tableau.
GetLongLength(Int32)
- Obtient la longueur du tableau sous forme d'un entier 64 bits.
GetLowerBound(Int32)
- Obtient l'index du premier élément dans la dimension spécifiée d'un tableau.
GetUpperBound(Int32)
- Obtient l'index du dernier élément dans la dimension spécifiée d'un tableau.
GetValue
GetValue(Int32): Obtient la valeur à l'index spécifié d'un tableau unidimensionnel.GetValue(Int32, Int32): Obtient la valeur à l'index spécifié d'un tableau bidimensionnel.GetValue(Int32, Int32, Int32): Obtient la valeur à l'index spécifié d'un tableau tridimensionnel.GetValue(Int32[]): Obtient la valeur d'un tableau multidimensionnel.
IndexOf
IndexOf(Array, Object): Retourne l'index de la première occurrence de l'objet spécifié.IndexOf(Array, Object, Int32): Retourne l'index de la première occurrence de l'objet spécifié dans une plage spécifique du tableau.IndexOf(Array, Object, Int32, Int32): Retourne l'index de la première occurrence de l'objet spécifié dans la plage spécifiée du tableau.
LastIndexOf
- similaire à
IndexOf, mais effectue la recherche à partir de la fin du tableau.
- similaire à
Resize<T>(T[], Int32)
- Modifie la taille d'un tableau unidimensionnel.
Reverse
Reverse(Array): Inverse l'ordre des éléments dans le tableau.Reverse<T>(T[]): Inverse l'ordre des éléments dans un tableau générique.
SetValue
SetValue(Object, Int32): Définit la valeur à l'indice spécifié du tableau.SetValue(Object, Int32, Int32): Définit la valeur à la position spécifiée d'un tableau à deux dimensions.
Sort
Sort(Array): Trie le tableau.Sort<T>(T[], IComparer<T>): Trie un tableau générique.
TrueForAll<T>(T[], Predicate<T>)
- Détermine si tous les éléments d'un tableau satisfont la condition.
Pour la liste complète des méthodes de la classe Array, veuillez consulter la documentation Microsoft C#.
Exemple
Le programme suivant illustre l'utilisation de certaines méthodes de la classe Array :
Exemple
namespace ArrayApplication
{
class MyArray
{
static void Main(string[] args)
{
int[] list = { 34, 72, 13, 44, 25, 30, 10 };
Console.Write("Tableau d'origine : ");
foreach (int i in list)
{
Console.Write(i + " ");
}
Console.WriteLine();
// Inverser le tableau
Array.Reverse(list);
Console.Write("Tableau inversé : ");
foreach (int i in list)
{
Console.Write(i + " ");
}
Console.WriteLine();
// Trier le tableau
Array.Sort(list);
Console.Write("Tableau trié : ");
foreach (int i in list)
{
Console.Write(i + " ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
原始数组: 34 72 13 44 25 30 10 逆转数组: 10 30 25 44 13 72 34 排序数组: 10 13 25 30 34 44 72
Exemples de méthodes courantes
1. Array.Clear(Array, int index, int length)
Définit une plage spécifiée d'éléments dans un tableau à la valeur par défaut de leur type.
int[] arr = {1, 2, 3, 4, 5};
Array.Clear(arr, 1, 2); // arr = {1, 0, 0, 4, 5}2. Array.Copy(Array sourceArray, Array destinationArray, int length)
Copie les éléments du tableau source vers le tableau de destination.
int[] source = {1, 2, 3};
int[] destination = new int[3];
Array.Copy(source, destination, 3); // destination = {1, 2, 3}
3. Array.Clone()
Crée une copie superficielle du tableau.
int[] arr = {1, 2, 3};
int[] clonedArr = (int[])arr.Clone();
4. Array.IndexOf(Array array, object value)
Retourne l'index de la première occurrence de l'élément spécifié dans un tableau unidimensionnel.
int[] arr = {1, 2, 3, 2};
int index = Array.IndexOf(arr, 2); // index = 1
5. Array.LastIndexOf(Array array, object value)
Retourne l'index de la dernière occurrence de l'élément spécifié dans un tableau unidimensionnel.
int[] arr = {1, 2, 3, 2};
int lastIndex = Array.LastIndexOf(arr, 2); // lastIndex = 3
6. Array.Reverse(Array array)
Inverse l'ordre des éléments dans un tableau unidimensionnel.
int[] arr = {1, 2, 3};
Array.Reverse(arr); // arr = {3, 2, 1}
7. Array.Sort(Array array)
Trie les éléments d'un tableau unidimensionnel par ordre croissant.
int[] arr = {3, 1, 2};
Array.Sort(arr); // arr = {1, 2, 3}
8. Array.BinarySearch(Array array, object value)
Recherche un élément dans un tableau unidimensionnel trié et renvoie son index.
int[] arr = {1, 2, 3, 4, 5};
int index = Array.BinarySearch(arr, 3); // index = 2
Remarque :Avant d'utiliser BinarySearch, le tableau doit déjà être trié.
9. Array.Resize
Redimensionne un tableau unidimensionnel.
int[] arr = {1, 2, 3};
Array.Resize(ref arr, 5); // arr = {1, 2, 3, 0, 0}
10. Array.Exists<T>(T[] array, Predicate
Détermine si un élément du tableau remplit la condition.
int[] arr = {1, 2, 3};
bool exists = Array.Exists(arr, x => x == 2); // exists = true
11. Array.Find<T>(T[] array, Predicate
Recherche le premier élément du tableau qui remplit la condition.
int[] arr = {1, 2, 3, 4};
int result = Array.Find(arr, x => x > 2); // result = 3
12. Array.FindAll<T>(T[] array, Predicate
Trouve tous les éléments du tableau qui remplissent la condition.
int[] arr = {1, 2, 3, 4};
int[] results = Array.FindAll(arr, x => x > 2); // results = {3, 4}
13. Array.FindIndex<T>(T[] array, Predicate
Retourne l'index du premier élément qui remplit la condition.
int[] arr = {1, 2, 3, 4};
int index = Array.FindIndex(arr, x => x > 2); // index = 2
14. Array.FindLast<T>(T[] array, Predicate
Trouve le dernier élément qui correspond aux conditions.
int[] arr = {1, 2, 3, 4};
int result = Array.FindLast(arr, x => x > 2); // result = 4
15. Array.FindLastIndex<T>(T[] array, Predicate
Retourne l'index du dernier élément qui remplit la condition.
int[] arr = {1, 2, 3, 4};
int index = Array.FindLastIndex(arr, x => x > 2); // index = 3
16. Array.TrueForAll<T>(T[] array, Predicate
Détermine si tous les éléments du tableau satisfont à la condition.
int[] arr = {1, 2, 3};
bool allPositive = Array.TrueForAll(arr, x => x > 0); // allPositive = true
17. Array.ForEach<T>(T[] array, Action
Effectue l'opération spécifiée sur chaque élément du tableau.
int[] arr = {1, 2, 3};
Array.ForEach(arr, x => Console.WriteLine(x)); // 输出 1 2 318. Array.ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length)
Copie une partie d'un tableau vers un autre tableau et garantit qu'aucune corruption de données ne se produit si la copie échoue.
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
Array.ConstrainedCopy(source, 0, destination, 0, 5);
19. Array.Fill<T>(T[] array, T value)
Définit tous les éléments du tableau sur la valeur spécifiée.
int[] arr = new int[5];
Array.Fill(arr, 10); // arr = {10, 10, 10, 10, 10}
20. Array.AsReadOnly<T>(T[] array)
Retourne un wrapper en lecture seule pour le tableau.
int[] arr = {1, 2, 3};
var readOnlyArr = Array.AsReadOnly(arr);
// readOnlyArr[0] = 5; // 编译错误,集合是只读的
Exemple
class Program
{
static void Main()
{
// Créer et initialiser un tableau
int[] numbers = {5, 2, 8, 1, 3};
// Trier le tableau
Array.Sort(numbers); // numbers = {1, 2, 3, 5, 8}
// Rechercher l'élément
int index = Array.BinarySearch(numbers, 5); // index = 3
// Inverser le tableau
Array.Reverse(numbers); // numbers = {8, 5, 3, 2, 1}
// Vérifier s'il y a des éléments supérieurs à 6
bool exists = Array.Exists(numbers, x => x > 6); // exists = true
// Multiplier les éléments du tableau par 2
Array.ForEach(numbers, x => Console.WriteLine(x * 2));
// Redimensionner le tableau
Array.Resize(ref numbers, 7); // numbers = {8, 5, 3, 2, 1, 0, 0}
// Remplir les nouveaux éléments
Array.Fill(numbers, 10, 5, 2); // Mettre les 2 éléments à partir de l'index 5 à 10
// numbers = {8, 5, 3, 2, 1, 10, 10}
}
}