Metodi di estensione C#

Metodi di estensione C#
Il concetto di metodo di estensione viene utilizzato per inserire nuovi metodi nella classe già presenti nel programma. Oppure può consentirci di aggiungere alcune funzionalità di estensione senza modificare il codice sorgente del tipo originale. Ciò impedisce l'uso dell'eredità e rende complicato il codice. Come si possono accedere a questi metodi se i metodi di estensione sono presenti nella nuova classe?

La risposta a questa query risiede nell'uso di un parametro di legame. Questi sono usati per legare la classe con le funzioni appena create. È una variabile vuota che non contiene alcun valore; funge solo da semplice parola chiave. Viene sempre dichiarato in primo luogo nell'elenco dei parametri. Se è scritto se non nel luogo iniziale, il compilatore pertinente darà un errore. La parola chiave utilizzata per lo scopo vincolante è "questo".

# Questo campione s;

Tutti i metodi di estensione sono sempre dichiarati statici, ma una volta che il legame si è verificato con la classe, queste funzioni diventano non stat.

Esempio 1

Considera un semplice programma C Sharp in cui sono definite tre funzioni. Tutte queste funzioni contengono una semplice console.Dichiarazione WriteLine per visualizzare il messaggio sugli schermi. Questi metodi sono le funzioni regolari come i programmi semplici.

# Public void m1 ()

Ora vogliamo aggiungere estensioni a questo programma esistente. Le estensioni svolgono un ruolo importante nell'aggiunta di nuove funzioni in classe senza usare l'eredità. Inoltre, possiamo semplicemente aggiungere una nuova classe senza modificare quella precedente. Aggiungeremo due metodi di estensione al campione di classe. Le nuove funzioni saranno dichiarate in una nuova classe statica e diventeranno parte della classe di esempio esistente. Questo processo è noto come vincolo. Quindi viene creata una nuova classe statica. Questa classe non ha alcun legame con la classe esistente, in quanto non è ereditata dalla classe astratta o dalla classe già esistente.

All'interno della classe, dichiariamo due nuove funzioni statiche. Queste funzioni hanno le stesse dichiarazioni da visualizzare. Mentre la dichiarazione delle funzioni statiche, nel parametro, utilizziamo la parola chiave "questo" insieme all'oggetto della classe di esempio. Un "questo" è un parametro di legame; Non contiene alcun valore ma viene utilizzato solo per legare i metodi statici appena creati con quello esistente nella classe già definita. Dato che vogliamo legare i metodi con il campione di classe, la classe e l'oggetto sono usati negli argomenti per lo scopo vincolante.

# Public Static Void M4 (questo campione S)

Allo stesso modo, la seconda funzione prenderà anche questa parola chiave e l'oggetto della classe. Nell'elenco dei parametri, dichiariamo i parametri di associazione sempre all'inizio.

Questa funzione visualizzerà un'istruzione passata tramite il programma principale. Viene dichiarata una lezione per il programma principale. All'interno del programma principale, creeremo un oggetto per la classe di esempio, poiché abbiamo collegato i nuovi metodi con la classe di esempio, quindi tutti questi metodi saranno accessibili tramite l'oggetto della classe di esempio. Non è necessario creare un oggetto per la nuova classe.

# Campione s = nuovo campione ();

L'oggetto della classe è indicato in modo dinamico. Questo oggetto chiamerà tutte le funzioni di entrambe le classi definite separatamente.

# S.M1 ();

Eseguiremo il codice sorgente sopra nel terminale Ubuntu. A tale scopo, sarà necessario un compilatore, quindi usiamo MCS e useremo Mono per eseguire il file con l'estensione di .exe.

File $ MCS.cs
File $ mono.exe

Esempio 2

In questo esempio, viene creata una funzione booleana per confrontare due valori e restituire se il primo valore è maggiore del primo. Questo confronto viene effettuato nella classe di estensione dichiarata in un metodo di estensione. Dopo aver dichiarato le librerie, abbiamo usato direttamente una singola classe in cui viene dichiarato un metodo esteso.

All'interno della classe, abbiamo preso una funzione di tipo bool. Questo booleano restituirà un unico valore, "vero" o "falso" alla volta. Se il primo valore è maggiore di "vero" verrà inviato; Altrimenti, la risposta sarà falsa. Questo parametro contiene il parametro "questo" per legare la funzione estesa con le variabili che abbiamo inviato ad essa dal programma principale. Mentre due variabili del tipo di dati interi sono anche dichiarate qui per archiviare i valori. Verrà effettuato il confronto tra questi due numeri interi e il valore verrà restituito.

All'interno del programma principale, una variabile di tipo intero viene presa e assegnata un valore.

# Bool z = stri.MyExtensionMethod (200);

Una variabile di tipo bool verrà dichiarata qui per accettare il valore restituito della funzione in una chiamata di funzione. L'oggetto Stri viene utilizzato per chiamare la funzione. Questo richiederà un valore nel parametro. Il secondo valore viene inviato ad esso tramite l'oggetto quando si chiama la funzione.

Salva il codice ed eseguilo; Vedrai che il primo valore era più piccolo del secondo, motivo per cui la risposta è falsa.

Esempio 3

In questo esempio di C. Viene creata una classe statica. La parola chiave statica mostra che un'altra classe non può ereditare. All'interno di questa classe statica, viene dichiarato un metodo statico. Questo metodo troverà la lunghezza totale della stringa. Quindi il parametro del metodo conterrà una variabile di tipo stringa per accettare la stringa di input.

Il metodo di lunghezza si accede tramite l'oggetto della stringa. Ora dichiara la funzione principale. Assegna un valore stringa al tipo di dati String.

# Int z = stri.estensionMethodName ();

Questa chiamata di funzione riprenderà la lunghezza e la memorizzerà nella variabile tipo intero. Questa lunghezza verrà visualizzata tramite questa variabile in seguito con l'aiuto del metodo WriteLine ().

Compila il codice ed eseguilo. Vedrai che nel programma è stata utilizzata una stringa di 10 caratteri.

Conclusione

Un metodo di estensione in C Sharp viene utilizzato per aggiungere alcune funzionalità extra al programma senza modificare il codice esistente una volta scritto. Questo può essere fatto utilizzando una classe extra con metodi estesi. Tuttavia, questi metodi fanno parte di un'altra classe ma possono essere collegati e accessibili dall'oggetto della classe già creata. Abbiamo usato alcuni esempi di base che hanno spiegato la creazione e il funzionamento dei metodi estesi. La parola chiave "questo" svolge un ruolo importante nei metodi di estensione vincolante con la classe. Usiamo questa parola chiave nel parametro della funzione estesa.