Differenza tra ref e out in C #

Autore: Laura McKinney
Data Della Creazione: 2 Aprile 2021
Data Di Aggiornamento: 5 Maggio 2024
Anonim
C# Out parameters Vs REF parameters
Video: C# Out parameters Vs REF parameters

Contenuto


"Ref" e "Out" sono i modificatori di parametro utilizzati in C #. Utilizzando ref e out, è possibile passare qualsiasi tipo di valore facendo riferimento a qualsiasi metodo. Il motivo del passaggio di qualsiasi tipo di valore tramite il riferimento introduce la differenza principale tra la parola chiave ref e out. Il arbitro la parola chiave consente al metodo chiamato di modificare il contenuto dell'argomento passato ad esso con la parola chiave ref. Il su la parola chiave consente al metodo chiamato di restituire più di un valore in una singola chiamata. Studiamo la differenza tra ref e out insieme a una tabella di confronto.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoarbitroSu
Di basePermette l'alterazione del valore dell'argomento proceduto con la parola chiave ref.Consente a un metodo di restituire quei valori preceduti da una parola chiave out.
InizializzazioneIl parametro ref deve essere inizializzato prima della chiamata del metodo.Il parametro out deve essere inizializzato all'interno del metodo chiamato prima che termini.
DichiarazioneIl parametro da modificare con un metodo viene dichiarato come ref mentre la dichiarazione del metodo e la chiamata del metodo.Il parametro da restituire deve essere dichiarato come ref mentre la dichiarazione del metodo e la chiamata del metodo.


Definizione della parola chiave di riferimento

"Ref" è un modificatore di parametro utilizzato quando è necessario chiamare un metodo con chiamata per riferimento. Quando vogliamo che le modifiche apportate agli argomenti all'interno di un metodo chiamato debbano riflettere il valore originale di quella variabile, viene utilizzato il modificatore del parametro ref. Il tipo di valore che vogliamo dichiarare come riferimento è preceduto dalla parola chiave "ref" durante la dichiarazione del metodo e dalla chiamata del metodo. Più di un parametro può essere dichiarato come "ref" durante la chiamata e la dichiarazione di un metodo.

utilizzando il sistema; class DemoRef {quadrato vuoto pubblico (ref int s) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("una chiamata al metodo precedente:" + a); ob.Square (rif. a); // Usato ref Keyword Console.WriteLine ("a after call:" + a); }} // genera una chiamata al metodo precedente: 10 una chiamata al metodo after: 100

Nel codice sopra, la variabile "a" viene passata come argomento al metodo Square (ref a) insieme al parametro modificatore ref ad esso allegato. Significa che qualunque modifica il metodo Square (ref a) eseguirà sulla variabile "a" al suo interno si rifletterà nel valore originale di "a", anche al di fuori del metodo.


Vi sono alcuni punti importanti che devono essere ricordati quando si ha a che fare con il modificatore di parametri "ref".

  • L'argomento che si sta passando dal riferimento a un metodo deve essere inizializzato prima della chiamata del metodo.
  • Il metodo non deve assegnare il valore iniziale all'argomento ref.
  • Puoi anche usare ref insieme alla variabile di riferimento.

Definizione di Out Keyword

Ogni volta che chiami un metodo, restituisce un solo valore. Se si desidera che un metodo restituisca più di un valore durante una chiamata, è necessario utilizzare la parola chiave "out" insieme ai parametri che si desidera restituire al termine del metodo. A volte capita che quando non vogliamo passare nulla al metodo ma vogliamo che il metodo restituisca qualcosa, usiamo i parametri con una parola chiave out.Comprendiamolo con un esempio.

utilizzando il sistema; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; whole_num = (int) x; frazione = x - whole_num; restituisce whole_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; double frac; i = ob.Decompose (100.125, out frac); // ha usato la parola chiave Console.WriteLine ("Tutta la parte numerica è" + i); Console.WriteLine ("la parte della frazione è" + frac); }} // output La parte intera è 100 La parte frazionaria è 0.125

Nel codice precedente, due valori vengono restituiti dal metodo Decompose (). Uno restituisce con la parola chiave "return", vale a dire intero_um, e l'altro restituisce un parametro che è preceduto dalla parola chiave out mentre il metodo chiama, ad esempio "frac".

I punti importanti da ricordare sulla parola chiave out.

  • A differenza della parola chiave ref, il parametro che utilizza la parola chiave out non deve essere inizializzato prima della chiamata al metodo.
  • Il metodo chiamato assegnerà esso stesso un valore al parametro con una parola chiave out poiché viene considerato non assegnato all'interno del metodo chiamato, ovvero si presume che non abbia un valore iniziale.
  • Il metodo chiamato deve assegnare un valore al parametro out prima che il metodo termini.
  • La parola chiave out è applicabile anche alla variabile di riferimento.
  1. Quando una variabile preceduta dalla parola chiave ref viene passata a qualsiasi metodo, le modifiche apportate ad esso all'interno del metodo si riflettono nel suo valore originale. Quando una variabile passata a un metodo è preceduta dalla parola chiave out, il metodo la restituisce senza utilizzare la parola chiave return.
  2. Il parametro ref deve essere inizializzato prima di essere passato a un metodo. D'altra parte, il parametro out deve essere inizializzato all'interno del metodo a cui è passato.
  3. Durante la chiamata, la dichiarazione o la definizione di un metodo, il parametro ref viene dichiarato esplicitamente come ref. D'altra parte, durante la chiamata, la dichiarazione o la definizione di un metodo, il parametro out viene dichiarato esplicitamente come out.

Conclusione:

Ogni volta che la variabile deve essere passata dal riferimento a un metodo, è possibile utilizzare la parola chiave ref e out. Considerando che, il motivo dell'uso di entrambe le parole chiave è diverso quando la parola chiave ref può essere utilizzata per modificare il valore dell'argomento preceduto dalla parola chiave ref, passata al metodo chiamato e la parola chiave out viene utilizzata per restituire il valore dell'argomento precedente dalla parola chiave out.