Ieteicams, 2024

Redaktora Izvēle

Atšķirība starp ref un out C #

“Ref” un “Out” ir parametru modifikatori, ko izmanto C #. Izmantojot ref un out, jūs varat nodot jebkuru vērtību veidu, atsaucoties uz jebkuru metodi. Iemesls, kāpēc jebkura veida vērtība tiek pārsūtīta ar atsauci, rada galveno atšķirību starp atslēgvārdu ref un out. Atslēgvārdu atslēgvārds ļauj izsauktajai metodei mainīt ar ref atslēgvārdu tai nodotā ​​argumenta saturu. Atslēgvārds ļauj izsaukt metodi, lai vienā zvanā atgrieztu vairāk nekā vienu vērtību. Pētīsim atšķirību starp ref un out, kā arī salīdzināšanas diagrammu.

Salīdzinājuma diagramma

Salīdzinājuma pamatsRefOut
PamataTas ļauj mainīt argumenta vērtību ar ref atslēgvārdu.Tas ļauj metodei atgriezt šīs vērtības, pirms kurām ir atslēgvārds.
InicializācijaRef metode ir jāsāk inicializēt pirms metodes izsaukuma.Pirms izbeigšanas parametrs ir jāsāk inicializētam izsauktajai metodei.
DeklarācijaParametru, kas jāmaina ar metodi, deklarē kā ref, bet metodi deklarē un metodi sauc.Atgriežamais parametrs ir jādeklarē kā ref, bet metodes deklarācija un metode.

Atslēgvārdu definīcija

“Ref” ir parametru modifikators, ko izmanto, ja ir nepieciešams izsaukt metodi ar zvanu pēc atsauces. Ja mēs vēlamies, lai izmaiņām, kas veiktas argumenta iekšienē izsauktajā metodē, jāatspoguļo šī mainīgā sākotnējā vērtība, tad tiek izmantots ref parametra modifikators. Vērtības veidu, kuru mēs vēlamies deklarēt kā ref, pirms “ref” atslēgvārda metodes deklarācijas un metodes izsaukšanas laikā. Vairāki parametri var tikt pasludināti par “ref”, zvanot un deklarējot metodi.

 izmantojot sistēmu; klase DemoRef {public void Square (ref int s) {s = s * s; }} klase Ref_main {static void Main () {DemoRef ob = jauns DemoRef (); int a = 10; Console.WriteLine ("pirms metodes izsaukuma:" + a); ob.Square (ref a); // Izmantota ref Atslēgvārdu konsole.WriteLine ("a 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 metodes laukumam (ref a) kopā ar tam pievienoto parametru modifikatoru ref. Tas nozīmē, ka mainās metode Square (ref a), kas mainīsies uz mainīgā “a” iekšpusē, un tas atspoguļos “a” sākotnējo vērtību ārpus metodes.

Ir daži svarīgi punkti, kas jāatceras, risinot parametru modifikatoru “ref”.

  • Argumentu, kuru jūs iziet cauri ref metodei, jābūt inicializētam pirms metodes izsaukšanas.
  • Metode nedrīkst piešķirt sākotnējam vērtējumam ref argumentu.
  • Varat arī izmantot ref kopā ar atsauces mainīgo.

Atslēgvārdu definīcija

Katru reizi, kad izsaucat metodi, tas atgriezīs tikai vienu vērtību. Ja vēlaties, lai zvana laikā tiktu atgriezta vairāk nekā viena vērtība, atslēgvārdam “out” ir jāizmanto kopā ar parametriem, kurus vēlaties atgriezties, 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 atgrieztos atpakaļ, mēs izmantojam parametrus ar atslēgvārdu. Sapratīsim to ar piemēru.

 izmantojot sistēmu; klase DemoOut {public int Sadalīt (dubultā x, divkāršā frakcija) {int visa_num; full_num = (int) x; frakcija = x - visa vērtība; atgriezties veselā; }} class Out_maint {static void Main () {DemoOut ob = jauns DemoOut (); int i; dubultā frac; i = ob.Decompose (100.125, ārā frac); // izmantoja atslēgvārdu Console.WriteLine ("Visa numuru daļa ir" + i "); Console.WriteLine ("frakcijas daļa ir" + frac); }} // produkcija Integer daļa ir 100 Frakciju daļa ir 0.125 

Iepriekš minētajā kodā tiek atgrieztas divas vērtības, metode Sadalīt (). Viens tas atgriežas ar atslēgvārdu “atgriešanās”, ti, veselas_num, un tas atdod parametru, kam pirms tiek parādīts atslēgvārds, bet metode, ko sauc par “frac”.

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

  • Pretēji ref atslēgvārdam parametru, kas izmanto atslēgvārdu, nedrīkst inicializēt pirms metodes izsaukšanas.
  • Izsauktā metode pati piešķir parametram vērtību ar atslēgvārdu, jo tā tiek uzskatīta par nepiešķirtu izsaukto metodi, ti, tiek pieņemts, ka tai nav sākotnējās vērtības.
  • Pirms metodes izbeigšanas izsauktajam parametram ir jānorāda vērtība.
  • Atslēgvārds ir piemērojams arī atsauces mainīgajam.

Galvenās atšķirības starp Ref un Out in C #

  1. Ja kādam no metodēm tiek nodots mainīgais, kam seko ref atslēgvārds, tad izmaiņas, kas tajā izdarītas, atspoguļo tā sākotnējo vērtību. Ja pēc metodes, kas tiek pārsūtīta uz metodi, tiek ievadīts atslēgvārds, metode atgriež to, neizmantojot atgriešanās atslēgvārdu.
  2. Ref parametrs ir jāsāk inicializēt, pirms tas tiek nodots metodei. No otras puses, izejošajam parametram jābūt inicializētam tās metodes ietvaros, kas tiek nodota.
  3. Zvanot, deklarējot vai definējot metodi, ref parametrs ir skaidri deklarēts kā ref. No otras puses, izsaucot, deklarējot vai definējot metodi, izejas parametrs ir nepārprotami deklarēts.

Secinājums:

Ikreiz, kad mainīgais lielums ir jānodod ar atsauci uz metodi, var izmantot ref un out atslēgvārdu. Tā kā abu atslēgvārdu izmantošanas iemesls ir atšķirīgs, ja ref atslēgvārdu var izmantot, lai mainītu argumenta vērtību, kas ir pirms ref atslēgas vārda, kas nodota izsauktajai metodei, un atslēgvārds tiek izmantots, lai atgrieztu atpakaļ argumenta vērtību pirms ar atslēgvārdu.

Top