C# Passare per riferimento

C# Passare per riferimento
Mentre si lavora in una programmazione orientata agli oggetti, potresti aver provato il concetto di valore passando per riferimento nei codici, i.e. C, c++. Passa come riferimento mezzi per indicare la posizione della memoria di una determinata variabile senza creare le sue copie. I riferimenti sono probabilmente usati per eseguire determinate modifiche e farle riflettere nella posizione della memoria originale senza alcun problema. Tendiamo a utilizzare il carattere "&" in linguaggi orientati agli oggetti per eseguire riferimenti pass-by.

In C#, eseguiamo i valori di passaggio per riferimento usando la parola chiave "Rif". Vediamo come funziona. A partire dall'implementazione di questa guida, dobbiamo avere un file C# per creare alcuni codici di programmazione. Fin qui tutto bene; Abbiamo usato la query "touch" di Ubuntu per generare un nuovo file C# nell'attuale directory di lavoro del nostro sistema Linux.

Esempio 01

Avremo il nostro primo esempio di questo codice con la definizione della struttura del programma C#. Quindi, abbiamo aperto il C#, creato un file nell'editor di testo integrato di Ubuntu 20.04 e aggiunto la libreria "Sistema" alla sua prima riga. Questa libreria è la principale sorgente di input e output nei codici C#. Senza questa biblioteca, il nostro codice non ci è utile perché non funzionerà nel modo in cui vogliamo. Quindi, dopo aver aggiunto la libreria, abbiamo creato un "riferimento" dello spazio dei nomi casuali in questo codice. Questo spazio dei nomi è definito dall'utente.

Abbiamo anche creato una nuova classe definita dall'utente, "Riferimento", in questo programma per inizializzare il nostro codice con una certa implementazione. Questa classe di "riferimento" definita dall'utente contiene un totale di 2 funzioni in essa. La prima funzione è la funzione principale () integrata con tipo di ritorno "void statico", che si dice anche sia la funzione del driver del nostro codice C#, i.e. Tutta l'esecuzione ne inizia da essa. L'altra funzione è una funzione casuale definita dall'utente denominata "aggiornamento", con il tipo di ritorno "vuoto statico pubblico".

La console.La funzione WriteLine () è qui per visualizzare il valore originale di una variabile "N" che utilizza i suoi parametri come mostrato di seguito nell'immagine. Dopo questo, abbiamo chiamato la funzione "Aggiornamento" dalla variabile di passaggio principale "N" come valore parametrico. Ora, il controllo va alla funzione "Aggiorna", che ha preso il valore della variabile "N" come riferimento utilizzando la nuova variabile "Val" di tipo intero. Questa variabile "Val" moltiplicherà il suo valore passato "5" dalla funzione principale () per "3" e sovrascrive alla variabile "Val".

Non esiste una dichiarazione di ritorno qui. L'esecuzione della funzione di aggiornamento è stata completata e il controllo è tornato alla funzione "principale". La funzione principale () esegue la sua prossima console.Funzione WriteLine () per visualizzare il valore aggiornato della variabile "N" utilizzando "N" nei suoi parametri. La funzione principale () e il nostro codice C# sono completi e pronti per essere utilizzati. Salviamolo di Ctrl+S e usciamo prima con Ctrl+X.

Dopo aver salvato il file C#, il primo passo che dobbiamo fare è compilare questo codice con il compilatore "MCS" di C# già configurato nel nostro Ubuntu 20.04 Sistema. Quindi, lo abbiamo fatto e il file "exe" per questo codice compilato è stato automaticamente creato nella stessa posizione. Abbiamo usato le istruzioni di esecuzione di runtime "mono" per i codici C# per eseguire questo file "EXE" e ottenuto il risultato di Below mostrato. Si scopre che il valore originale e il valore aggiornato sono uguali.e. Finora non sono state apportate modifiche.

Dai un'occhiata al problema ora. Quando proviamo ad aggiornare il valore della variabile "N" passandolo come riferimento, non individua l'indirizzo di memoria della variabile originale "N". Invece, ha creato un altro oggetto replica con lo stesso nome e valore e lo ha passato alla funzione di aggiornamento. Pertanto, le modifiche apportate al nuovo oggetto non influiscono sul valore "N" variabile originale.

Per evitare questo problema, il framework C# ha escogitato la nuova parola chiave "Rif" per passare i valori come riferimento a qualsiasi parametro di funzione. Usando questa parola chiave "Rif", è stata utilizzata la posizione della memoria variabile originale al posto del nuovo indirizzo di memoria, i.e. Indicando la posizione della memoria della variabile originale. Pertanto, abbiamo aggiornato il nostro codice e utilizzato la parola chiave "Rif" mentre passano la variabile "N" come riferimento alla funzione di aggiornamento. Questa parola chiave è stata utilizzata nella funzione principale () mentre la funzione di funzione alla funzione "aggiornamento" e nei parametri della funzione "update ()" come visualizzato.

Dopo aver compilato il file C# aggiornato ed aver eseguito il suo "exe" subito dopo, ci è stato presentato con l'output mostrato. Questa volta il valore "5" della variabile "N" è stato aggiornato a "15" a causa dell'uso della parola chiave "Rif" per passare un valore come riferimento.

Esempio 02

Diamo un'occhiata a un altro esempio per eseguire lo scambio passando valori nei parametri. La classe "Test" ha utilizzato una funzione "swap" definita dall'utente e la funzione driver principale (). L'esecuzione è iniziata dal metodo principale () in cui abbiamo creato un oggetto "t" del test di classe e inizializzato due variabili interali, V1 e V2, con valori interi: la console.Le istruzioni di funzione WriteLine () visualizzano i valori delle variabili V1 e V2 prima dello scambio.

Successivamente, la funzione di swap viene chiamata passando variabili V1 e V2 nei suoi parametri come riferimento. La parola chiave "Ref" è stata utilizzata qui per entrambe le variabili. All'interno dell'implementazione della funzione "Aggiorna", abbiamo anche utilizzato la parola chiave "Rif" per entrambe le variabili N1 e N2 per passare i valori per riferimento. Per scambiare i valori di una variabile a un'altra, dobbiamo avere un terzo valore per eseguire questo. La nuova variabile "V" è stata inizializzata all'interno di questa funzione, prendendo il valore della variabile N1 come prima parte. Il valore di N2 è stato sovrascritto in variabile N1 e il valore della variabile V è stato salvato in variabile N2. Lo scambio del valore N1 con N2 è stato fatto qui. La console di funzione principale ().La funzione WriteLine () è qui per visualizzare ora i valori appena scambiati di N1 e N2.

Dopo la compilazione e l'esecuzione di questo codice di esempio, abbiamo i valori di V1 e V2 come 14 e 7 prima dello scambio. Dopo lo scambio, risulta essere l'opposto, io.e. v1 = 7 e v2 = 14.

Se rimuoviamo la parola chiave "Rif" dalla chiamata di funzione e la definizione della funzione della funzione "aggiornamento" come abbiamo fatto di seguito, lo scambio non verrà eseguito.

Qui puoi vedere l'output mostra che i valori di V1 e V2 sono gli stessi anche dopo aver usato la funzione SWAP.

Conclusione

Questa guida consiste nell'uso della parola chiave "Rif" in C# per eseguire i valori di passaggio per riferimento. Questo riferimento è stato fatto utilizzando la posizione di memoria esatta di determinate variabili. All'interno di questa guida, abbiamo discusso utilizzando la parola chiave "Rif" per aggiornare il valore originale di una variabile moltiplicandola con un certo numero e scambiando i valori di due variabili in due diversi esempi. Questo è stato eseguito in modo molto fluido con "Ref".