Menu
Coddy logo textTech

Le mot-clé 'params'

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 47 sur 70.

Le mot-clé params permet à une méthode d'accepter un nombre variable d'arguments du même type. Au lieu d'exiger que les appelants créent un tableau manuellement, ils peuvent passer les arguments directement, séparés par des virgules.

Placez params avant un paramètre de tableau dans la signature de la méthode :

public static int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers)
        total += n;
    return total;
}

// Tous ces appels fonctionnent
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (tableau vide)

Le compilateur enveloppe automatiquement les arguments dans un tableau. Vous pouvez également passer directement un tableau existant si vous en avez déjà un :

int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values));  // 60

Il y a quelques règles à retenir : une méthode ne peut avoir qu'un seul paramètre params, et il doit être le dernier paramètre de la liste. Vous pouvez le combiner avec des paramètres réguliers :

public static void Log(string prefix, params object[] items)
{
    foreach (var item in items)
        Console.WriteLine(prefix + item);
}

Log("Item: ", "Apple", 42, true);

Le mot-clé params rend les API plus flexibles et plus conviviales pour l'appelant, c'est pourquoi vous le voyez dans des méthodes comme Console.WriteLine et string.Format.

challenge icon

Défi

Facile

Construisons un formateur de messages flexible qui utilise le mot-clé params pour gérer n'importe quel nombre de valeurs. Vous allez créer une classe utilitaire capable de formater des messages avec des arguments variables, démontrant ainsi comment params rend les méthodes plus polyvalentes et plus conviviales pour l'appelant.

Vous organiserez votre code sur deux fichiers :

  • MessageFormatter.cs : Créez une classe MessageFormatter dans l'espace de noms Formatting avec deux méthodes utilisant params :
    • Combine(params string[] parts) - joint toutes les chaînes fournies avec un espace entre elles et renvoie le résultat
    • FormatList(string label, params int[] numbers) - combine un paramètre régulier avec un tableau params. Elle doit renvoyer le libellé suivi d'un deux-points, puis tous les nombres séparés par des virgules (par exemple, Scores: 85, 90, 78)
  • Program.cs : Dans votre fichier principal, démontrez les deux méthodes avec des entrées. Lisez une chaîne de caractères pour le libellé, puis lisez une ligne d'entiers séparés par des virgules. Utilisez Combine pour joindre trois mots fixes, et utilisez FormatList pour afficher le libellé avec les nombres.

Vous recevrez deux entrées :

  • Une chaîne de caractères pour le libellé (par exemple, Scores)
  • Une liste d'entiers séparés par des virgules (par exemple, 85,90,78,92)

Tout d'abord, appelez Combine avec les mots "Hello", "params", et "world!" et affichez le résultat. Ensuite, analysez les entiers séparés par des virgules pour les transformer en tableau et appelez FormatList avec le libellé et le tableau d'entiers, en affichant également ce résultat.

Par exemple, si les entrées sont Scores et 85,90,78, la sortie devrait être :

Hello params world!
Scores: 85, 90, 78

Remarquez comment Combine accepte n'importe quel nombre de chaînes directement, tandis que FormatList montre que vous pouvez mélanger des paramètres réguliers avec params - le paramètre params doit simplement arriver en dernier. Vous pouvez également passer un tableau existant à une méthode params, ce qui est exactement ce que vous ferez avec les entiers analysés !

Aide-mémoire

Le mot-clé params permet à une méthode d'accepter un nombre variable d'arguments du même type sans obliger les appelants à créer manuellement un tableau :

public static int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers)
        total += n;
    return total;
}

// Tous ces appels fonctionnent
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (tableau vide)

Vous pouvez passer directement un tableau existant à une méthode params :

int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values));  // 60

Règles pour params :

  • Une méthode ne peut avoir qu'un seul paramètre params
  • Il doit être le dernier paramètre de la liste
  • Il peut être combiné avec des paramètres réguliers
public static void Log(string prefix, params object[] items)
{
    foreach (var item in items)
        Console.WriteLine(prefix + item);
}

Log("Item: ", "Apple", 42, true);

Essayez vous-même

using System;
using Formatting;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les entrées
        string label = Console.ReadLine();
        string numbersInput = Console.ReadLine();
        
        // TODO: Utiliser MessageFormatter.Combine avec "Hello", "params", et "world!"
        // et afficher le résultat
        
        
        // TODO: Analyser les entiers séparés par des virgules dans un tableau d'entiers
        // Astuce : Diviser la chaîne et convertir chaque partie en entier
        
        
        // TODO: Utiliser MessageFormatter.FormatList avec le label et le tableau d'entiers
        // et afficher le résultat
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet