C# - Indexeurs : Un guide pour débutants

Bonjour, aspirants programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des indexeurs en C#. Ne vous inquiétez pas si vous êtes nouveau dans le domaine de la programmation - je serai votre guide amical, expliquant tout étape par étape. Alors, plongeon dans l'aventure !

C# - Indexers

Qu'est-ce que les indexeurs ?

Imaginez que vous avez une étagère de livres. Plutôt que de chercher dans chaque livre pour trouver celui que vous voulez, ne serait-il pas génial de pouvoir dire "Donne-moi le 3e livre" ou "Donne-moi le livre intitulé 'C# pour les débutants'" ? C'est exactement ce que font les indexeurs en C# - ils fournissent un moyen pratique d'accéder aux éléments dans une classe qui représente une collection de valeurs.

Syntaxe des indexeurs

Commençons par la syntaxe de base d'un indexeur :

public Type this[Type index]
{
get { /* return the value */ }
set { /* set the value */ }
}

Ne laissez pas cela vous effrayer ! Decomposons-le :

  • public : Cela signifie que l'indexeur peut être accessible depuis l'extérieur de la classe.
  • Type : Il s'agit du type de valeur que l'indexeur retournera ou définira.
  • this : Ce mot-clé est utilisé pour définir un indexeur.
  • [Type index] : Cela spécifie le type et le nom du paramètre d'index.
  • get et set : Ce sont des méthodes d'accès qui récupèrent ou définissent la valeur.

Utilisation des indexeurs

Voyons maintenant les indexeurs en action avec un exemple simple :

public class Bookshelf
{
private string[] books = new string[5];

public string this[int index]
{
get { return books[index]; }
set { books[index] = value; }
}
}

Dans cet exemple, nous avons créé une classe Bookshelf avec un indexeur. Voici comment nous pouvons l'utiliser :

Bookshelf myShelf = new Bookshelf();
myShelf[0] = "C# for Beginners";
myShelf[1] = "Advanced C#";

Console.WriteLine(myShelf[0]); // Affiche : C# for Beginners

N'est-ce pas génial ? Nous pouvons accéder et modifier les livres comme nous le ferions avec un tableau, mais nous travaillons en réalité avec une classe personnalisée !

Pourquoi utiliser des indexeurs ?

Vous pourriez vous demander, "Pourquoi ne pas utiliser un tableau ?" Eh bien, les indexeurs nous offrent plus de contrôle. Nous pouvons ajouter une validation, un journal ou tout logicieel personnalisé lors de la récupération ou de la définition des valeurs. Par exemple :

public string this[int index]
{
get
{
if (index < 0 || index >= books.Length)
throw new IndexOutOfRangeException("Invalid book index!");
return books[index];
}
set
{
if (index < 0 || index >= books.Length)
throw new IndexOutOfRangeException("Invalid book index!");
books[index] = value;
}
}

Maintenant, si quelqu'un essaie d'accéder à un livre qui n'existe pas, il recevra un message d'erreur utile plutôt que de faire planter le programme !

Indexeurs surchargés

Comme les méthodes, les indexeurs peuvent être surchargés. Cela signifie que nous pouvons avoir plusieurs indexeurs avec différents types de paramètres. Élargissons notre exemple Bookshelf :

public class Bookshelf
{
private string[] books = new string[5];

// Indexeur avec un paramètre de type int
public string this[int index]
{
get { return books[index]; }
set { books[index] = value; }
}

// Indexeur avec un paramètre de type string
public string this[string title]
{
get
{
return Array.Find(books, book => book == title);
}
set
{
int index = Array.FindIndex(books, book => book == title);
if (index >= 0)
books[index] = value;
}
}
}

Maintenant, nous pouvons accéder aux livres par leur index ou leur titre :

Bookshelf myShelf = new Bookshelf();
myShelf[0] = "C# for Beginners";
myShelf[1] = "Advanced C#";

Console.WriteLine(myShelf[0]); // Affiche : C# for Beginners
Console.WriteLine(myShelf["Advanced C#"]); // Affiche : Advanced C#

myShelf["C# for Beginners"] = "C# Mastery";
Console.WriteLine(myShelf[0]); // Affiche : C# Mastery

N'est-ce pas puissant ? Nous pouvons maintenant interagir avec notre Bookshelf de multiples manières intuitives !

Table des méthodes des indexeurs

Voici un tableau de réference des méthodes d'indexeur que nous avons couvertes :

Méthode Description Exemple
get Récupère la valeur à l'index spécifié return books[index];
set Définit la valeur à l'index spécifié books[index] = value;

Conclusion

Et voilà ! Nous avons exploré le monde des indexeurs en C#, de la syntaxe de base aux indexeurs surchargés. Souvenez-vous, les indexeurs sont des outils puissants qui peuvent rendre votre code plus intuitif et plus facile à utiliser. Ils sont comme des sorts magiques qui transforment vos classes en collections faciles à utiliser.

Alors que vous continuez votre voyage en programmation, vous découvrirez de nombreuses autres fonctionnalités passionnantes en C#. Mais pour l'instant, félicitez-vous - vous venez de maîtriser les indexeurs ! Continuez à pratiquer, restez curieux, et bon codage !

Credits: Image by storyset