Metodi di estensione in C# spiegati

Metodi di estensione in C# spiegati
I metodi di estensione sono una potente caratteristica di C# che consente agli sviluppatori di estendere i tipi esistenti con nuove funzionalità senza modificare il loro codice sorgente. Questo articolo esplorerà i metodi di estensione C# e come possono essere utilizzati in questo linguaggio di programmazione.

Quali sono i metodi di estensione?

I metodi di estensione sono una sorta di metodo statico che rimuove il problema della modifica del codice sorgente per l'aggiunta di nuovi metodi. Ciò significa che gli sviluppatori possono aggiungere nuove funzionalità a tipi come stringhe, numeri interi o qualsiasi altra classe personalizzata senza dover creare una nuova classe o modificare la classe originale. I metodi di estensione sono definiti in classi statiche e usano il "Questo" Parola chiave per specificare il tipo esteso, la sintassi per la creazione di un metodo di estensione è la seguente:

Public Static ReturnType MethodName (questo parametro ExtendedType)

// implementazione

La parola chiave pubblica indica che il metodo è accessibile da qualsiasi luogo nel codice, statico indica che il metodo è un metodo statico e ReturnType è il tipo di dati che viene restituito con quel metodo. MethodName è il nome del metodo di estensione e questa parola chiave seguita da ExtendedType Il parametro indica che questo metodo estende la classe ExtendedType.

Il parametro è il parametro passato al metodo e l'implementazione del metodo è scritta all'interno delle parentesi graffe . Questa sintassi consente agli sviluppatori di creare nuovi metodi per i tipi esistenti, rendendo il codice più riutilizzabile e modulare.

Come utilizzare il metodo di estensione per estendere la classe stringa

Supponiamo di voler aggiungere un nuovo metodo alla classe String che capitalizza la prima lettera della stringa, puoi farlo usando un metodo di estensione utilizzando il codice indicato di seguito:

usando il sistema;
stringextensions di classe statica pubblica

Public Static String capitalizeFirstletter (questa stringa input)

if (stringa.Isnullorempty (input))

restituzione input;

Restituisce Carma.Toupper (input [0]) + input.Substring (1);


Programma di classe

statico void main (string [] args)

String input = "Hello Linux";
String Result = Input.CapitalizeFirstletter ();
Console.WriteLine (risultato);

Abbiamo creato una nuova applicazione della console che include la classe Stringextensions e, in main, abbiamo creato una variabile stringa denominata come input e la assegnata una stringa che contiene "Ciao Linux". Successivamente il Capitalizzafirstletter Il metodo di estensione viene chiamato sulla stringa di input, che capitalizza la prima lettera della stringa. Infine, stampiamo il risultato sulla console usando la funzione "WriteLine ()" in modo da vedere l'output "Ciao Linux" Quando esegui questo programma:

Come utilizzare il metodo di estensione per estendere la classe intera

Supponiamo di voler aggiungere un nuovo metodo alla classe intera che determina se l'intero è uniforme o dispari. Puoi farlo usando un metodo di estensione, come mostrato di seguito:

usando il sistema;
Integerestensioni di classe statica pubblica

public static bool iseven (questo input int)

restituzione input % 2 == 0;


Programma di classe

statico void main (string [] args)

numero int = 10;
if (numero.È anche())

Console.WriteLine ($ "numero è anche.");

altro

Console.WriteLine ($ "numero è dispari.");


Il codice crea un metodo di estensione è il tipo di dati INT e il È anche La funzione restituisce vera se l'intero input è uniforme e falso altrimenti.

Nella principale, abbiamo creato un numero di variabile intero e lo abbiamo assegnato il valore 10 e successivamente chiamiamo il metodo di estensione ISEven sulla variabile numero, che restituisce vero poiché 10 è persino. Infine, stampiamo il risultato sulla console usando la funzione "WriteLine ()" in modo da vedere l'output "10 è pari" Quando esegui questo programma:

Come utilizzare il metodo di estensione per estendere l'interfaccia dell'elenco

Supponiamo che tu voglia aggiungere un nuovo metodo al Ilist interfaccia che determina se l'elenco è vuoto o meno e per eseguire il suo metodo di estensione, come mostrato di seguito:

usando il sistema;
Utilizzo del sistema.Collezioni.Generico;
Public Static Class ListExtensions

public static bool isempty (questa lista ilista)

Elenco di ritorno == NULL || elenco.Count == 0;


Programma di classe

statico void main (string [] args)

Elenco numeri = new List ();
Se (numeri.È vuoto())

Console.WriteLine ("L'elenco è vuoto.");

altro

Console.WriteLine ($ "L'elenco contiene numeri.Conte elementi.");


In questo esempio, abbiamo creato un metodo di estensione ISEMPTY per l'ilist Tipo di dati, dove T è un parametro di tipo generico. IL È vuoto Il metodo restituisce vero se l'elenco di input è nullo o non ha elementi e falsi altrimenti. Nel principale abbiamo creato un nuovo Elenco chiamato numeri e poi chiamato il È vuoto Metodo di estensione nell'elenco dei numeri, che restituisce vero poiché l'elenco è vuoto. Inizialmente, stampiamo il risultato sulla console usando la funzione "WriteLine ()" in modo da vedere l'output "L'elenco è vuoto" Quando esegui questo programma:

Conclusione

I metodi di estensione sono una delle caratteristiche più utili di C# che consente ai programmatori di estendere i tipi esistenti con nuove funzionalità senza modificare il loro codice originale. I metodi di estensione sono definiti in una classe statica e usano il "Questo" parola chiave seguita dal tipo esteso per indicare che sono metodi di estensione. In questo articolo, abbiamo visto tre esempi di metodi di estensione che estendono le classi di stringa, intero e iliste.