Menu
Coddy logo textTech

La parola chiave 'params'

Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 47 di 70.

La parola chiave params consente a un metodo di accettare un numero variabile di argomenti dello stesso tipo. Invece di richiedere a chi chiama di creare manualmente un array, permette di passare direttamente gli argomenti, separati da virgole.

Inserisci params prima di un parametro array nella firma del metodo:

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

// Todas estas llamadas funcionan
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (arreglo vacío)

Il compilatore racchiude automaticamente gli argomenti in un array. Puoi anche passare direttamente un array esistente, se ne hai già uno:

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

Ci sono alcune regole da ricordare: un metodo può avere un solo parametro params e deve essere l’ultimo parametro dell’elenco. Puoi combinarlo con parametri normali:

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

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

La parola chiave params rende le API più flessibili e pratiche per chi le chiama; per questo la trovi in metodi come Console.WriteLine e string.Format.

challenge icon

Sfida

Facile

Costruiamo un formattatore di messaggi flessibile che usa la parola chiave params per gestire un numero qualsiasi di valori. Creerai una classe di utilità in grado di formattare messaggi con argomenti variabili, mostrando come params renda i metodi più versatili e comodi da usare per chi li chiama.

Organizzerai il codice in due file:

  • MessageFormatter.cs: crea una classe MessageFormatter nello spazio dei nomi Formatting con due metodi che usano params:
    • Combine(params string[] parts) - unisce tutte le stringhe fornite, separandole con uno spazio, e restituisce il risultato
    • FormatList(string label, params int[] numbers) - combina un parametro normale con un array params. Dovrebbe restituire l'etichetta seguita da due punti, quindi tutti i numeri separati da virgole (ad es., Scores: 85, 90, 78)
  • Program.cs: nel file principale, mostra entrambi i metodi usando degli input. Leggi una stringa per l'etichetta, quindi leggi una riga di numeri interi separati da virgole. Usa Combine per unire tre parole fisse e usa FormatList per visualizzare l'etichetta con i numeri.

Riceverai due input:

  • Una stringa per l'etichetta (ad es., Scores)
  • Un elenco di numeri interi separati da virgole (ad es., 85,90,78,92)

Per prima cosa, chiama Combine con le parole "Hello", "params" e "world!" e stampa il risultato. Poi analizza i numeri interi separati da virgole inserendoli in un array e chiama FormatList con l'etichetta e l'array di numeri interi, stampando anche questo risultato.

Per esempio, se gli input sono Scores e 85,90,78, l'output dovrebbe essere:

Hello params world!
Scores: 85, 90, 78

Nota come Combine accetti direttamente un numero qualsiasi di stringhe, mentre FormatList mostra che puoi mescolare parametri normali e params: il parametro params deve semplicemente essere l'ultimo. Puoi anche passare un array esistente a un metodo params, ed è proprio quello che farai con i numeri interi analizzati!

Provalo tu

using System;
using Formatting;

class Program
{
    public static void Main(string[] args)
    {
        // Leggi gli input
        string label = Console.ReadLine();
        string numbersInput = Console.ReadLine();
        
        // TODO: Usa MessageFormatter.Combine con "Hello", "params" e "world!"
        // e stampa il risultato
        
        
        // TODO: Converti gli interi separati da virgole in un array di int
        // Suggerimento: dividi la stringa e converti ogni parte in int
        
        
        // TODO: Usa MessageFormatter.FormatList con label e l'array di int
        // e stampa il risultato
        
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C# online