Maison >développement back-end >Tutoriel C#.Net >Comment fonctionnent les tableaux en C# ?

Comment fonctionnent les tableaux en C# ?

WBOY
WBOYavant
2023-09-10 09:41:081345parcourir

数组在 C# 中如何工作?

Un tableau représente un nombre fixe d'éléments d'un type donné. Les éléments sont stockés dans des blocs de mémoire contigus et vous pouvez accéder efficacement aux éléments tant que vous connaissez leur index.

La syntaxe C# pour déclarer et initialiser un tableau est la suivante -

// create a string array to hold 5 languages
string[] languages = new string[3];

Après avoir déclaré un tableau, vous pouvez utiliser le symbole carré sur le tableau pour remplir les éléments du tableau.

languages[0] = "csharp";
languages[1] = "visual basic";
languages[2] = "f#";

Cependant, il existe une syntaxe concise alternative qui combine les deux étapes ci-dessus en une seule étape.

string[] languages = new string[] { "csharp", "visual basic", "f#" };

Avec les variables implicitement typées en C#, vous pouvez vous débarrasser du type sur le côté gauche du nom de la variable et utiliser simplement var.

var languages = new string[] { "csharp", "visual basic", "f#" };

Vous pouvez accéder à n'importe quel élément du tableau en utilisant la même notation carrée.

string language = languages[0];
Console.WriteLine(language); // prints csharp

La propriété Longueur d'un tableau nous indique combien d'éléments se trouvent dans le tableau.

int count = languages.Length;
Console.WriteLine(count); // 3

Il est important de se rappeler que la longueur d'un tableau ne peut pas être modifiée une fois qu'il est créé. Tenter d'accéder à un élément en dehors des limites du tableau lève une exception.

string lang = languages[3]; // throws System.IndexOutOfRangeException

Si vous souhaitez parcourir un tableau, utilisez la boucle for ou foreach fournie par le langage.

// for loop
for (int i = 0; i < languages.Length; i++){
   string l = languages[i];
   Console.WriteLine(l); // prints the names of languages in sequence
}
// foreach loop
foreach (string l in languages){
   Console.WriteLine(l); // prints the names of languages in sequence
}

Valeurs par défaut

Lorsque vous créez un tableau, le compilateur C# initialise les éléments à leurs valeurs par défaut. Par exemple, la création d'un tableau d'entiers définit la valeur de chaque élément sur 0.

var numbers = new int[3];
foreach (int num in numbers){
   Console.WriteLine(num); // prints 000
}

Lorsqu'un élément est d'un type valeur, chaque membre de ce type se voit attribuer sa valeur par défaut.

Point[] a = new Point[4];
int x = a[2].X;
Console.WriteLine(x); // prints 0
public struct Point { public int X, Y; }

Cependant, pour les types référence, le compilateur crée simplement des références nulles pour chaque élément.

User[] u = new User[4];
int y = u[2].Y; // NullReference exception
public class User { public int X, Y; }

Pour éviter cette erreur, vous devez initialiser chaque élément explicitement comme indiqué ci-dessous.

User[] users = new User[5];
for (int i = 0; i < users.Length; i++) // Iterate i from 0 to 999
users[i] = new User();

Exemple

Démonstration en temps réel

using System;
class Program{
   static void Main(){
      string[] languages = new string[3]; // create a string array to hold 5 languages
      languages[0] = "csharp";
      languages[1] = "visual basic";
      languages[2] = "f#";
      string[] langugages_two = new string[] { "csharp", "visual basic", "f#" };
      var languages_three = new string[] { "csharp", "visual basic", "f#" };
      string language = languages[0];
      Console.WriteLine(language); // prints csharp
      int count = languages.Length; // 3
      Console.WriteLine(count);
      //string lang = languages[3]; // throws System.IndexOutOfRangeException
      // for loop
      for (int i = 0; i < languages.Length; i++){
         string l = languages[i];
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      // foreach loop
      foreach (string l in languages){
         Console.WriteLine(l); // prints the names of languages in sequence
      }
      var numbers = new int[3];
      foreach (int num in numbers){
         Console.WriteLine(num); // prints 000
      }
      Point[] a = new Point[4];
      int x = a[2].X;
      Console.WriteLine(x); // prints 0
      User[] u = new User[4];
      //int y = u[2].Y; // NullReference exception
      User[] users = new User[5];
      for (int i = 0; i <users.Length; i++) // Iterate i from 0 to 999
      users[i] = new User();
   }
}
public struct Point { public int X, Y; }
public class User { public int X, Y; }

Sortie

csharp
3
csharp
visual basic
f#
csharp
visual basic
f#
0
0
0
0

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer