TOC

This article is currently in the process of being translated into Italian (~99% done).

Classi:

Method overloading

Molti linguaggi di programmazione supportano una tecnica chiamata parametri di default/opzionali. Ciò permette al programmatore di rendere uno o più parametri opzionali dando loro un valore di default. È specialmente pratico quando si aggiungono funzionalità a del codice esistente.

Ad esempio, potresti voler aggiungere funzionalità ad una funzione esistente che richiede uno o più parametri aggiuntivi. Facendo ciò, renderesti non funzionanti le chiamate esistenti verso tale funzione, poiché esse non passano il corretto numero di parametri. Per aggirare questo problema, potresti definire i parametri aggiunti come opzionali e dargli un valore di default che corrisponda a come il codice avrebbe funzionato prima di aggiungere i parametri.

I parametri opzionali furono introdotti in nella versione 4.0 di C#, ma prima di allora, i programmatori C# usavano una tecnica differente che fa la stessa cosa, chiamata overloading dei metodi. Questo permette ai programmatori di definire diversi metodi con lo stesso nome, purché accettino un numero diverso di parametri. Quando usi le classi del .NET framework, ti accorgerai subito che l'overloading dei metodi è usato ovunque. Un buon esempio di questo è il metodo Substring() della classe String. Ha un'ulteriore definizione, come questa:

string Substring (int startIndex)
string Substring (int startIndex, int length)

Puoi chiamarlo sia con uno che con due parametri. Se lo chiami solo con un parametro, il parametro length sarà assunto essere pari al resto della stringa, facendoci risparmiare tempo ogni volta che vogliamo tutta la parte restante della stringa.

Quindi, definendo diverse versioni della stessa funzione, come evitiamo di avere lo stesso codice in posti diversi? In realà è molto semplice: facciamo fare tutto il lavoro complesso alla versione semplice del metodo. Considera l'esempio seguente:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return number1 + number2 + number3;
    }
}

Definiamo un metodo Plus in due differenti versioni. La prima ammette due parametri per sommare due numeri, mentre la seconda versione ammette tre numeri. Il lavoro effettivo è fatto nella versione che ammette tre numeri - se vogliamo sommarne due, chiamiamo la versione con tre parametri e semplicemente usiamo 0 come terzo parametro, comportandosi come valore default. Lo so, lo so, è un esempio sciocco, come indicato dal nome della classe, ma dovrebbe darti un'idea di come funziona il tutto.

Ora, qual'ora sentissi il bisogno di passare alla matematica avanzata aggiungendo al totale un quarto numero (sto scherzando), è molto semplice aggiungere un nuovo overload:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return Plus(number1, number2, number3, 0);
    }

    public static int Plus(int number1, int number2, int number3, int number4)
    {
        return number1 + number2 + number3 + number4;
    }
}

La cosa buona di tutto ciò, è che tutte le tue chiamate esistenti del metodo Plus continueranno a funzionare, come se nulla fosse cambiato.Più userai C#, più imparerai ad apprezzare l'overloading dei metodi.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!