Starpība starp ref un out C #

Autors: Laura McKinney
Radīšanas Datums: 2 Aprīlis 2021
Atjaunināšanas Datums: 5 Maijs 2024
Anonim
Vladimir Putin - Putin, Putout (The Unofficial Russian Anthem) by Klemen Slakonja
Video: Vladimir Putin - Putin, Putout (The Unofficial Russian Anthem) by Klemen Slakonja

Saturs


“Ref” un “Out” ir parametru modifikatori, kas izmantoti C #. Izmantojot ref un out, jūs varat nodot jebkuru vērtību tipu, atsaucoties uz jebkuru metodi. Iemesls jebkura veida vērtības pārsūtīšanai ar atsauci ievieš galveno atšķirību starp ref un out atslēgvārdu. atsauce atslēgvārds ļauj izsauktajai metodei mainīt tai nodotā ​​argumenta saturu ar atsauces atslēgu. ārā atslēgvārds ļauj izsauktajai metodei vienā zvana laikā atgriezt vairāk nekā vienu vērtību. Pētīsim atšķirību starp atsauci un atsauci, kā arī salīdzināšanas diagrammu.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsRefĀrā
PamataTas ļauj mainīt argumenta vērtību, izmantojot atsauces atslēgu.Tas ļauj metodei atgriezt vērtības, pirms kurām ir atslēgas vārds.
InicializēšanaRef. Parametrs jāinicializē pirms metodes izsaukuma.Pirms tā darbības beigām parametram out jābūt inicializētam izsauktajā metodē.
DeklarācijaParametru, kas jāmaina ar metodi, deklarē kā atsauci, kamēr tiek deklarēta metode un izsaukta metode.Atgriežamais parametrs jādeklarē kā ref, kamēr tiek deklarēta metode un izsaukta metode.


Ref Atslēgvārda definīcija

“Ref” ir parametru modifikators, ko izmanto, ja ir jāizsauc metode ar izsaukuma atsauci. Ja vēlamies, lai argumentos veiktās izmaiņas izsauktajā metodē būtu jāatspoguļo šī mainīgā sākotnējā vērtībā, tad tiek izmantots atsauces parametra modifikators. Vērtības tipam, kuru mēs vēlamies deklarēt kā atsauci, metodes deklarēšanas un metodes izsaukšanas laikā ir atslēgas vārds “ref”. Vairāk nekā vienu parametru var deklarēt kā “atsauci”, zvanot un paziņojot par metodi.

izmantojot Sistēmu; klase DemoRef {public void Square (ref int s) {s = s * s; }} klase Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("pirms metodes izsaukums:" + a); ob.Square (ref a); // Lietots ref Atslēgvārdu konsole.WriteLine ("pēc zvana:" + a); }} // izeja pirms metodes izsaukuma: 10 a pēc metodes izsaukuma: 100

Iepriekš minētajā kodā mainīgais “a” tiek nodots kā arguments metodei Square (ref a) kopā ar tai pievienoto parametru modifikatoru ref. Tas nozīmē, ka jebkuras izmaiņas, ko kvadrāts (ref a) veiks mainīgajam “a” tā iekšpusē, atspoguļos “a” sākotnējo vērtību, arī ārpus metodes.


Ir daži svarīgi punkti, kas jāatceras, strādājot ar parametru modifikatoru “ref”.

  • Arguments, kuru jūs izmantojat, atsaucoties uz metodi, ir jāinicializē pirms metodes izsaukšanas.
  • Metodei nav jāpiešķir ref arguments sākotnējā vērtība.
  • Varat arī izmantot atsauci kopā ar atsauces mainīgo.

Ārējā atslēgvārda definīcija

Katru reizi, kad piezvanīsit metodei, tā atgriezīs tikai vienu vērtību. Ja vēlaties, lai metode zvana laikā atgrieztu vairāk nekā vienu vērtību, ir jāizmanto “out” atslēgvārds kopā ar parametriem, kurus vēlaties atgriezt, kad metode tiek pārtraukta. Dažreiz tas ir gadījums, kad mēs nevēlamies kaut ko nodot metodei, bet vēlamies, lai metode kaut ko atgrieztu, mēs izmantojam parametrus ar atslēgas vārdu.Sapratīsim to ar piemēru.

izmantojot Sistēmu; klase DemoOut {public int Decompose (dubultā x, no dubultās frakcijas) {int vesels_num; vesels_num = (int) x; frakcija = x - vesels_numulis; atgriezt veselu_numu; }} klase Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; dubultā lūzums; i = ob.Decompose (100.125, ārējais lūzums); // izmantots atslēgvārds Console.WriteLine ("Vesela skaitļa daļa ir" + i); Console.WriteLine ("frakcijas daļa ir" + frac); }} // izejas veselais skaitlis ir 100 Frakcionētā daļa ir 0,125

Iepriekš minētajā kodā divas vērtības tiek atgrieztas ar metodi Decompose (). Vienu to atgriež ar atslēgvārdu “atgriešanās”, t.i., veselu_numu, bet otru, atgriež parametru, pirms kura ir ārējais atslēgvārds, bet metodi sauc par “frac”.

Svarīgi punkti, kas jāatceras par atslēgvārdu.

  • Atšķirībā no atsauces atslēgvārda, parametru, kas izmanto atslēgvārdu, nedrīkst inicializēt pirms metodes izsaukšanas.
  • Izsauktā metode pati parametram piešķirs vērtību ar atslēgas vārdu, jo tā tiek uzskatīta par nepiešķirtu izsauktajā metodē, t.i., tiek pieņemts, ka tai nav sākotnējās vērtības.
  • Izsauktajai metodei jāpiešķir vērtība parametram out pirms metodes izbeigšanas.
  • Atslēgvārds ārpus ir piemērojams arī atsauces mainīgajam.
  1. Ja mainīgais, kam seko ref atslēgvārds, tiek nodots kādai metodei, tad metodes iekšienē veiktās izmaiņas atspoguļo tā sākotnējo vērtību. Ja mainīgajam, kas nodots metodei, ir atslēgas vārds, metode to atgriež, neizmantojot atgriešanās atslēgvārdu.
  2. Ref parametrs jāinicializē, pirms tas tiek nodots metodei. No otras puses, izejas parametrs jāinicializē tajā metodē, kurai tas tiek nodots.
  3. Izsaucot, deklarējot vai definējot metodi, ref parametrs tiek nepārprotami deklarēts kā ref. No otras puses, izsaucot, deklarējot vai definējot metodi, parametrs out tiek skaidri deklarēts kā out.

Secinājums:

Ikreiz, kad mainīgais ir jānodod, atsaucoties uz metodi, var izmantot ref un out atslēgvārdu. Tā kā abu atslēgvārdu izmantošanas iemesls ir atšķirīgs, ja atsauces atsauces atslēgu var izmantot, lai mainītu argumenta vērtību, kam seko ref atslēgvārds, pāriet uz izsaukto metodi, un izejošais atslēgvārds tiek izmantots, lai atgrieztos iepriekšējā argumenta vērtību pēc ārējā atslēgvārda.