Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Overloading Dei Metodi | Fondamenti Di OOP
C# Oltre le Basi

bookOverloading Dei Metodi

Il sovraccarico dei metodi in C# consente di definire più metodi con lo stesso nome all'interno di una classe, ciascuno differente per tipo o numero di parametri, o entrambi, offrendo un modo più ordinato e adattabile per gestire diversi scenari di input.

Ad esempio, è possibile avere due metodi con lo stesso nome ma un numero diverso di parametri:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

Nel codice sopra, il metodo sum è stato sovraccaricato per avere due varianti di parametri. Un metodo può anche avere diversi tipi di ritorno per le sue varianti, tuttavia è importante che non vi sia ambiguità, altrimenti il compilatore mostrerà un errore poiché il modo principale per distinguere tra due metodi con lo stesso nome è la loro lista di parametri.

Ad esempio:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

Il codice sopra è errato perché i parametri sono esattamente gli stessi del metodo originale mentre il tipo di ritorno è diverso; questo non è consentito poiché rende impossibile per il compilatore (o anche per le persone) scegliere quale eseguire quando il metodo viene chiamato:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Ecco perché, durante il sovraccarico di un metodo, un metodo che ha un tipo di ritorno diverso dovrebbe anche avere un insieme di parametri differente per renderlo distinguibile ed eliminare ambiguità. Anche il seguente esempio è errato:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Questo perché i nomi dei parametri non sono rilevanti, mentre i loro tipi sì. I seguenti casi di sovraccarico sono validi:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. Come fa il compilatore a distinguere tra metodi sovraccaricati?

2. Quale delle seguenti è un esempio valido di sovraccarico di metodo?

question mark

Come fa il compilatore a distinguere tra metodi sovraccaricati?

Select the correct answer

question mark

Quale delle seguenti è un esempio valido di sovraccarico di metodo?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.04

bookOverloading Dei Metodi

Scorri per mostrare il menu

Il sovraccarico dei metodi in C# consente di definire più metodi con lo stesso nome all'interno di una classe, ciascuno differente per tipo o numero di parametri, o entrambi, offrendo un modo più ordinato e adattabile per gestire diversi scenari di input.

Ad esempio, è possibile avere due metodi con lo stesso nome ma un numero diverso di parametri:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

Nel codice sopra, il metodo sum è stato sovraccaricato per avere due varianti di parametri. Un metodo può anche avere diversi tipi di ritorno per le sue varianti, tuttavia è importante che non vi sia ambiguità, altrimenti il compilatore mostrerà un errore poiché il modo principale per distinguere tra due metodi con lo stesso nome è la loro lista di parametri.

Ad esempio:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

Il codice sopra è errato perché i parametri sono esattamente gli stessi del metodo originale mentre il tipo di ritorno è diverso; questo non è consentito poiché rende impossibile per il compilatore (o anche per le persone) scegliere quale eseguire quando il metodo viene chiamato:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Ecco perché, durante il sovraccarico di un metodo, un metodo che ha un tipo di ritorno diverso dovrebbe anche avere un insieme di parametri differente per renderlo distinguibile ed eliminare ambiguità. Anche il seguente esempio è errato:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Questo perché i nomi dei parametri non sono rilevanti, mentre i loro tipi sì. I seguenti casi di sovraccarico sono validi:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. Come fa il compilatore a distinguere tra metodi sovraccaricati?

2. Quale delle seguenti è un esempio valido di sovraccarico di metodo?

question mark

Come fa il compilatore a distinguere tra metodi sovraccaricati?

Select the correct answer

question mark

Quale delle seguenti è un esempio valido di sovraccarico di metodo?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 7
some-alt