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à
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
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
- Firme e valori restituiti; expr-bodied; parametri opzionali/con nome; ref/out; overloading
- Parametri opzionali/con nome; ref/out/in (nozioni di base)
- Funzioni locali (nota su C# 6) e overloading