Panoramica sul sovraccarico in C #

Nel sovraccarico in C #, il polimorfismo è un concetto di programmazione orientata agli oggetti che definisce la capacità di un oggetto, una variabile o un metodo di assumere più forme durante il tempo di compilazione / esecuzione. I fattori in tempo reale come dati, parametri, restituzione di un oggetto, ecc. Determinano quale forma prenderà l'oggetto / metodo / variabile. Ciò consente al programmatore di programmare in modo più generico piuttosto che specifico. Ad esempio, mangi frutta. Come mangi la frutta dipende dalla frutta che ti viene fornita in tempo reale. Mangiate subito una mela mentre sbucciate una banana prima di mangiarla. Semplice.

Che cos'è il metodo di sovraccarico in C #?

Il metodo di sovraccarico è l'implementazione in fase di compilazione del concetto di polimorfismo. Gli sviluppatori possono definire metodi simili con lo stesso nome, differendo nel numero di argomenti, nell'ordine degli argomenti o nel tipo di argomenti. Nell'esempio di frutta, non è necessario definire metodi separati per ciascun frutto (mangia mela, mangia la banana, ecc.). Puoi usare lo stesso nome per mangiare frutta e passarci diversi parametri. Il compilatore chiamerebbe automaticamente il metodo appropriato.

Prendiamo ora la prospettiva di C #. In parole povere, il sovraccarico dei metodi in C # è quando si hanno due o più metodi con lo stesso nome ma firme diverse. Ciò può essere ottenuto in vari modi:

  • Il diverso numero di parametri.
  • Diversi tipi di parametri.
  • Ordine diverso di parametri.
  • Parametri opzionali.
  • Argomenti nominati.

Come funziona il metodo di sovraccarico in C #?

Quindi, come viene chiamato il metodo appropriato in base agli argomenti / parametri? Bene, il compilatore controlla ogni definizione di metodo durante la compilazione e associa le chiamate del metodo alle rispettive definizioni. Nel caso in cui vi siano due metodi con lo stesso nome, il compilatore controlla quindi la firma dei metodi e associa la definizione appropriata alla chiamata. Anche se le firme non sono in grado di risolvere l'ambiguità, il compilatore cerca la conversione implicita di argomenti per abbinare le firme. Se una conversione implicita risulta in una corrispondenza della firma, viene eseguita l'associazione. In caso contrario, il compilatore genera un errore.

Esamineremo vari esempi in questo articolo per comprendere il funzionamento del compilatore in vari tipi di metodo di sovraccarico.

Tipi di metodi di sovraccarico in C #

Qui discutiamo i vari tipi di metodo di sovraccarico in C # sono riportati di seguito:

1. Numero diverso di parametri

La prima e la più semplice categoria di sovraccarico del metodo è quando i metodi hanno un numero diverso di parametri nelle loro firme.

Codice

L'esempio che segue è piuttosto semplice ed è un gioco da ragazzi.

using System;
public class Program
(
public static void Main()
(
Func(10);)
public static void Func(int a)
(
Console.WriteLine("Single Parameter");
)public static void Func(int a, int b)
(
Console.WriteLine("Multiple Parameters");
)
)

Produzione:

2. Diversi tipi di parametri

Quando le firme del metodo hanno un parametro / i che differiscono nei tipi. Il numero di parametri può essere o meno lo stesso.

Esempio 1

Nell'esempio seguente, entrambi i metodi prevedono un singolo argomento. Pertanto, in base al tipo di argomento passato durante la chiamata al metodo, il compilatore associa la definizione del metodo appropriata.

Codice

using System;
public class Program
(
public static void Main()
(
Func("Hello World");
)
public static void Func(int a)
(
Console.WriteLine("Integer Parameter");
)
public static void Func(string b)
(Console.WriteLine("String Parameter");
)
)

Produzione:

Esempio 2

Ora, diamo al compilatore qualcosa da pensare. Vorremmo sovraccaricare un metodo di tipo double e float. Sappiamo che un numero intero può sempre essere implicitamente convertito in un tipo float e in un doppio tipo.

Quando passiamo un argomento intero, il compilatore verifica la conversione implicita e scopre che la migliore conversione possibile è un numero intero da float. Quindi, viene chiamato il metodo float.

Codice

using System;
public class Program
(
public static void Main()
(
Func(10);
)
public static void Func(double a)
(
Console.WriteLine("Double Parameter");
)
public static void Func(float b)
(
Console.WriteLine("Floating Point Parameter");
)
)

Produzione:

3. Ordine dei parametri diverso

Quando il numero e il tipo di argomenti sono gli stessi, ma l'ordine in cui vengono passati differisce.

Esempio 1

L'esempio che segue è piuttosto semplice.

Codice

using System;
public class Program
(
public static void Main()
(
Func(10, 0.1);
)
public static void Func(int a, double b)
(
Console.WriteLine("Int-Double Parameters");
)
public static void Func(double a, int b)
(
Console.WriteLine("Double-Int Parameter");
)
)

Produzione:

Esempio 2

Cosa accadrebbe se passassimo due argomenti interi nell'esempio sopra? Scopriamolo.

Codice

Func(10, 1);

Produzione:

4. Parametri opzionali

Quando definiamo un parametro facoltativo nella firma del metodo, il compilatore lo considera come un metodo di sovraccarico.

Nota: questo ha la precedenza sulla conversione implicita.

Cerchiamo di capirlo con un esempio.

Esempio

Nell'esempio seguente, diamo al compilatore due scelte. O può implicitamente convertire l'argomento in modo che corrisponda alla firma del metodo. Oppure può passare il valore predefinito dell'argomento opzionale. Il compilatore preferisce quest'ultimo approccio.

Codice

using System;
public class Program
(
public static void Main()
(
Func(10);
)
public static void Func(int a, int b = 1)
(
Console.WriteLine("Int-Int Parameters");
)
public static void Func(double a)
(
Console.WriteLine("Double Parameter");
)
)

Produzione:

5. Argomenti nominati

C # ha un'altra caratteristica di passare il nome degli argomenti mentre chiama il metodo. Questo aiuta anche a sovraccaricare il metodo. Gli sviluppatori possono scegliere di chiamare un metodo particolare anche se l'argomento passato avrebbe chiamato di default un altro metodo. Tuttavia, i metodi sovraccaricati devono differire nella firma.

Esempio

Nell'esempio seguente, chiediamo al compilatore di chiamare un metodo particolare passando il nome del parametro. Il compilatore quindi sospende la sua logica per determinare il metodo più adatto.

Codice

using System;
public class Program
(
public static void Main()
(
Func(b: 10);
)
public static void Func(int a)
(
Console.WriteLine("Int-Int Parameters");
)
public static void Func(double b)
(
Console.WriteLine("Double Parameter");
)
)

Produzione:

Sovraccarico delle regole di metodo in C #

È necessario tenere presente le seguenti regole durante il sovraccarico dei metodi nell'applicazione C #.

  • La firma del metodo deve essere diversa. Il numero di argomenti, il tipo di argomenti o l'ordine degli argomenti deve essere diverso.
  • Il tipo restituito dei metodi non ha alcun ruolo nel sovraccarico dei metodi.
  • I parametri opzionali hanno la precedenza sulla conversione di tipo implicita quando decidono quale definizione di metodo associare.
  • La conversione implicita del tipo ha la precedenza sul metodo della classe genitore.
    Esercizio: per capirlo, ecco un piccolo esercizio per te. Crea una classe genitore con un metodo che prevede un numero intero Eredita una classe figlio. Sovraccaricare il metodo dalla classe genitore nella classe figlio in modo tale che il metodo della classe figlio preveda un argomento di tipo doppio. Creare un oggetto di classe figlio e chiamare il metodo sovraccarico passando un numero intero. Guarda cosa succede.

Conclusione

Il sovraccarico del metodo è un concetto abbastanza potente. È molto utile per scrivere codice elegante. Tuttavia, può andare fino a un certo punto quando decine di metodi sono sovraccarichi e lo sviluppatore deve fare riferimento alle definizioni dei metodi durante il debug delle chiamate errate. Per evitare ciò, si suggerisce spesso di assegnare un nome diverso ai metodi quando l'overload tende a ridimensionare a un livello superiore.

Articoli consigliati

Questa è una guida al sovraccarico in C #. Qui discutiamo il suo metodo, come funziona, i tipi con esempi e regole. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. C # While Loop
  2. Dichiarazione C # if
  3. Funzioni C #
  4. Usi di C #
  5. Guida al sovraccarico in C ++
  6. Sovraccarico in Java
  7. Sovraccarico di Python
  8. Sovraccarico e override in C #
  9. Conversione dei tipi in Java con tipi ed esempi

Categoria: