0Pricing
C# Academy · Lezione

Funzioni locali (nota su C# 6) e overloading

Sovraccarichi i metodi in sicurezza (stesso nome, parametri diversi) e, poiché C# 6 non dispone di funzioni locali, le simuli con piccoli helper privati.

Funzioni locali (nota su C# 6) e overloading è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 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

Obiettivo: riutilizzare un solo nome di metodo per operazioni correlate (overload). In C# 6 non esistono funzioni locali; utilizzare invece piccoli helper private.

Nozioni di base sugli overload

Gli overload condividono un nome, ma differiscono per tipo o numero di parametri. Il compilatore sceglie la corrispondenza migliore.

using System;

public static class MathX
{
  public static int Sum(int a, int b) { return a + b; }
  public static double Sum(double a, double b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Sum ints = " + MathX.Sum(2, 3));
    Console.WriteLine("Sum doubles = " + MathX.Sum(2.5, 3.1));
  }
}

Overload per arità

Modificare l'arità (il numero di parametri) crea un insieme di overload chiaro.
using System;

public static class Printer
{
  public static void Print(string text)
  {
    Console.WriteLine(text);
  }

  public static void Print(string text, int times)
  {
    for (int i = 0; i < times; i = i + 1)
    {
      Console.WriteLine(text);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Printer.Print("Hello");
    Printer.Print("Hi", 2);
  }
}

Regola del tipo restituito

Regola: il solo tipo restituito non può distinguere gli overload. Per un overload valido, modificare i tipi, il numero o i modificatori dei parametri, ad esempio ref/out.

Alternativa alle funzioni locali

In C# 6 non esistono funzioni locali: estrarre un piccolo metodo private per mantenere ordinato il metodo principale.

using System;

// No local functions in C# 6: use a tiny private helper inside the class.
public class Report
{
  private static string Header(string title)
  {
    return "-- " + title + " --";
  }

  public static void Print(string title, string body)
  {
    Console.WriteLine(Header(title));
    Console.WriteLine(body);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Report.Print("Status", "All green");
  }
}

Risoluzione degli overload

Il compilatore sceglie la corrispondenza migliore dall'insieme di overload. Se le chiamate sono ambigue, aggiungere un cast o modificare le firme.

using System;

public static class Formatter
{
  public static string Format(int n) { return "N=" + n; }
  public static string Format(string s) { return "S=" + s; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Formatter.Format(5));       // picks int overload
    Console.WriteLine(Formatter.Format("hello")); // picks string overload

    // Avoid ambiguity: cast when needed
    Console.WriteLine(Formatter.Format((int)3));
  }
}

Regola degli overload

Verifica rapida: quale affermazione sull'overload dei metodi in C# è corretta?

Riepilogo

Riepilogo: creare insiemi di overload modificando i tipi o il numero dei parametri, non il tipo restituito. In C# 6, sostituire le funzioni locali con piccoli helper private per mantenere ordinati i metodi.

Domande Frequenti

La lezione «Funzioni locali (nota su C# 6) e overloading» è gratuita?

Sì — il testo completo di «Funzioni locali (nota su C# 6) e overloading» è 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 «Funzioni locali (nota su C# 6) e overloading»?

Sovraccarichi i metodi in sicurezza (stesso nome, parametri diversi) e, poiché C# 6 non dispone di funzioni locali, le simuli con piccoli helper privati. 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 3 di 3.

Quanto tempo richiede la lezione «Funzioni locali (nota su C# 6) e overloading»?

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