0Pricing
C# Academy · Lezione

Parametri opzionali/con nome; ref/out/in (nozioni di base)

Utilizzi parametri opzionali e argomenti con nome per maggiore chiarezza; passi per riferimento con ref; restituisca valori aggiuntivi con out; tenga presente che i parametri in non sono disponibili in C# 6.

Parametri opzionali/con nome; ref/out/in (nozioni di base) è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 3 lezioni in totale.

Panoramica della lezione

Obiettivo: utilizzare parametri facoltativi e argomenti denominati per migliorare la leggibilità; comprendere ref e out. Nota: i parametri in non sono disponibili in C# 6.

Parametri facoltativi

Aggiungere valori predefiniti per una personalizzazione semplice, senza ricorrere a molti overload.

using System;

public static class Notifier
{
  // Optional parameter: suffix has a default value
  public static void Notify(string message, string suffix = "!")
  {
    Console.WriteLine(message + suffix);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Notifier.Notify("Saved");          // uses "!"
    Notifier.Notify("Warning", "!!");  // overrides default
  }
}

Argomenti denominati

Gli argomenti denominati rendono le chiamate autoesplicative e consentono di riordinarle in sicurezza.

using System;

public static class Greeter
{
  public static void Greet(string name, string prefix, int repeat)
  {
    for (int i = 0; i < repeat; i = i + 1)
    {
      Console.WriteLine(prefix + " " + name);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // Named args improve readability and allow reordering at call site
    Greeter.Greet(name: "Ada", prefix: "Hello", repeat: 2);
    Greeter.Greet(repeat: 1, name: "Alan", prefix: "Hi");
  }
}

Parametro ref

ref passa una variabile per riferimento; il chiamante deve inizializzarla prima.

using System;

public static class RefDemo
{
  public static void Increment(ref int n)
  {
    n = n + 1; // modifies caller's variable
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int value = 5;           // must be assigned before passing by ref
    RefDemo.Increment(ref value);
    Console.WriteLine("value = " + value); // 6
  }
}

Parametro out

out consente a un metodo di restituire valori aggiuntivi tramite i parametri; il metodo deve assegnarli.

using System;

public static class OutDemo
{
  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;   // out must be assigned before return
      return false;
    }
    result = a / b;
    return true;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int r; // not required to be assigned before passing as out
    bool ok = OutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

Informazioni su "in" (C# 6)

Nota: i parametri in (per riferimento in sola lettura) sono stati introdotti nelle versioni successive di C#. In C# 6 è possibile:

  • Passare per valore (copia) per i tipi piccoli
  • Utilizzare ref solo quando è necessaria la mutazione
  • Rendere i parametri dei metodi readonly per convenzione (non riassegnarli)

Nozioni di base su ref e out

Verifica rapida: quale affermazione su ref e out è corretta in C# 6?

Riepilogo

Riepilogo: utilizzare i parametri facoltativi per i valori predefiniti, gli argomenti denominati per maggiore chiarezza, ref per modificare i dati del chiamante e out per restituire valori aggiuntivi. C# 6 non supporta i parametri in.

Domande Frequenti

La lezione «Parametri opzionali/con nome; ref/out/in (nozioni di base)» è gratuita?

Sì — il testo completo di «Parametri opzionali/con nome; ref/out/in (nozioni di base)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 3 lezioni in totale.

Cosa imparerò in «Parametri opzionali/con nome; ref/out/in (nozioni di base)»?

Utilizzi parametri opzionali e argomenti con nome per maggiore chiarezza; passi per riferimento con ref; restituisca valori aggiuntivi con out; tenga presente che i parametri in non sono disponibili… Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Parametri opzionali/con nome; ref/out/in (nozioni di base)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Firme e valori restituiti; expr-bodied; parametri opzionali/con nome; ref/out; overloading
  2. Parametri opzionali/con nome; ref/out/in (nozioni di base)
  3. Funzioni locali (nota su C# 6) e overloading
← Torna a C# Academy