Menu
Coddy logo textTech

Parametri opzionali

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

I parametri facoltativi consentono di definire valori predefiniti per i parametri dei metodi. Quando chi chiama il metodo non fornisce un valore per quel parametro, il valore predefinito viene utilizzato automaticamente.

Crei un parametro facoltativo assegnando un valore predefinito nella firma del metodo:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Entrambe le chiamate funzionano
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

I parametri opzionali devono venire dopo tutti i parametri obbligatori. Puoi avere più parametri opzionali e chi chiama la funzione può ometterne alcuni a partire da destra:

public static void CreateUser(string name, int age = 0, bool isActive = true)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

I valori predefiniti devono essere costanti in fase di compilazione: valori letterali, valori const o espressioni default. Non puoi usare variabili o chiamate a metodi come valori predefiniti. Questo rende i parametri facoltativi ideali per le impostazioni di configurazione e per i metodi in cui la maggior parte dei chiamanti usa valori comuni.

challenge icon

Sfida

Facile

Creiamo un sistema di notifiche che utilizza parametri opzionali per offrire una formattazione flessibile dei messaggi. Creerai una classe di utilità che può inviare notifiche con impostazioni personalizzabili, in cui la maggior parte dei chiamanti utilizzerà valori predefiniti ragionevoli.

Organizzerai il codice in due file:

  • NotificationService.cs: crea una classe NotificationService nello spazio dei nomi Notifications con un metodo che dimostri l'uso dei parametri opzionali:
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) - Questo metodo dovrebbe restituire una stringa di notifica formattata. Quando addTimestamp è true, anteponi [TIMESTAMP] al messaggio. Il formato dovrebbe essere: [Priority] Message oppure [TIMESTAMP] [Priority] Message, a seconda dell'impostazione della data e ora.
  • Program.cs: nel file principale, mostra come funzionano i parametri opzionali chiamando SendNotification in tre modi diversi: usando tutti i valori predefiniti, sovrascrivendo un parametro e sovrascrivendo entrambi i parametri opzionali.

Riceverai tre input:

  • Primo messaggio (userà tutti i valori predefiniti)
  • Secondo messaggio (userà la priorità "Urgent" con la data e ora predefinite)
  • Terzo messaggio (userà la priorità "Low" e nessuna data e ora)

Chiama SendNotification tre volte e stampa ogni risultato:

  1. Prima chiamata: passa solo il primo messaggio (usa i valori predefiniti: priorità "Normal", data e ora abilitate)
  2. Seconda chiamata: passa il secondo messaggio con priorità "Urgent" (la data e ora è ancora impostata su true per impostazione predefinita)
  3. Terza chiamata: passa il terzo messaggio con priorità "Low" e false per la data e ora

Ad esempio, se gli input sono System started, Server overload e Cache cleared, l'output dovrebbe essere:

[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache cleared

Nota come lo stesso metodo gestisce elegantemente tutti e tre gli scenari: i chiamanti specificano solo ciò che vogliono modificare rispetto ai valori predefiniti!

Provalo tu

using System;
using Notifications;

class Program
{
    public static void Main(string[] args)
    {
        // Leggi i tre messaggi
        string message1 = Console.ReadLine();
        string message2 = Console.ReadLine();
        string message3 = Console.ReadLine();

        // Crea un'istanza di NotificationService
        NotificationService service = new NotificationService();

        // TODO: Chiama SendNotification tre volte e stampa ogni risultato:
        // 1. Prima chiamata: passa solo message1 (usa tutti i valori predefiniti)
        // 2. Seconda chiamata: passa message2 con priorità "Urgent" (timestamp ha true come valore predefinito)
        // 3. Terza chiamata: passa message3 con priorità "Low" e false per timestamp

    }
}
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