Primerjalna tabela
Podlaga za primerjavo | Ref | Out |
---|---|---|
Osnovno | Omogoča spreminjanje vrednosti argumenta, ki se nadaljuje z ključno besedo ref. | Metodi omogoča vrnitev tistih vrednosti, pred katerimi je ključna beseda. |
Inicializacija | Parameter ref mora biti inicializiran pred klicem metode. | Parameter out mora biti inicializiran znotraj imenovane metode, preden se konča. |
Deklaracija | Parameter, ki ga spreminja metoda, je deklariran kot ref, medtem ko je izjava o metodi in klic metode. | Vrnjeni parameter mora biti deklariran kot ref, medtem ko izjava o metodi in klic metode. |
Opredelitev ključne besede
"Ref" je modifikator parametrov, ki se uporablja, ko je treba poklicati metodo s klicem za referenco. Ko želimo, da morajo biti spremembe v argumentih znotraj imenovane metode izražene v izvirni vrednosti te spremenljivke, se uporabi modifikator parametra ref. Pred vrednostjo tipa, ki ga želimo prijaviti kot ref, je ključna beseda »ref« med izjavo o metodi in klic metode. Med klicanjem in deklariranjem metode lahko več kot en parameter označimo kot »ref«.
z uporabo sistema; class DemoRef {javni void Square (ref int s) {s = s * s; }} Razred Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("klic pred metodo:" + a); ob.Square (ref a); // Uporabljena je bila ključna beseda Console.WriteLine ("po pozivu:" + a); }} // izhod pred klicem metode: 10 a po klicu metode: 100
V zgornji kodi se spremenljivka „a“ posreduje kot argument Square (ref a) skupaj z modifikatorjem parametrov ref, ki je nanj povezan. To pomeni vse spremembe, ki jih bo metoda Square (ref a) opravila na spremenljivki "a", ki se bo odražala v izvirni vrednosti "a", tudi zunaj metode.
Obstaja nekaj pomembnih točk, ki jih je treba zapomniti, ko se ukvarjamo s parametrom "ref".
- Argument, ki ga posredujete z metodo, mora biti inicializiran pred klicanjem metode.
- Metoda ne sme dodeliti začetne vrednosti argumentu ref.
- Uporabite lahko tudi ref skupaj z referenčno spremenljivko.
Opredelitev ključne besede Out
Vsakič, ko pokličete metodo, se vrne samo ena vrednost. Če želite, da metoda ob klicu vrne več kot eno vrednost, morate uporabiti ključno besedo »out« skupaj s parametri, ki jih želite vrniti nazaj, ko je metoda končana. Včasih se zgodi, da ko ne želimo ničesar prenesti na metodo, ampak želimo, da metoda vrne nekaj nazaj, uporabimo parametre s ključno besedo out. Razumimo ga z zgledom.
z uporabo sistema; class DemoOut {public int Decompose (dvojni x, ven dvojni delež) {int whole_num; whole_num = (int) x; frakcija = x - celota; vrnitev celote; }} razred Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; dvojna frakcija; i = ob.Decompose (100.125, out frac); // uporabili smo ključno besedo Console.WriteLine ("del celega števila je" + i); Console.WriteLine ("frakcijski del je" + frac); }} // Izhod Celoten del je 100 Delni del je 0, 125
V zgornjo kodo se vrnejo dve vrednosti z metodo Decompose (). Eno vrne s ključno besedo “return”, tj. Whole_num, drugo pa vrne parameter, pred katerim je ključna beseda out, medtem ko metoda kliče, tj. “Frac”.
Pomembne točke za ključno besedo out.
- Za razliko od ključne besede ref, parametra, ki uporablja ključno besedo, ne smemo inicializirati pred klicem metode.
- Klicana metoda bo samemu parametru dodelila vrednost s ključno besedo out, ker se v imenovani metodi šteje za nedodeljeno, kar pomeni, da nima začetne vrednosti.
- Klicana metoda mora dodeliti vrednost parametru out, preden se metoda konča.
- Ključna beseda out velja tudi za referenčno spremenljivko.
Ključne razlike med Ref in Out v C #
- Če se spremenljivki, pred katero je ključna beseda ref, posreduje kateri koli metodi, se spremembe, ki so bile izvedene v njej, odražajo v njeni prvotni vrednosti. Ko spremenljivki, ki je bila posredovana metodi, sledi ključna beseda out, jo metoda vrne brez uporabe ključne besede return.
- Parameter ref bi moral biti inicializiran, preden je posredovan metodi. Po drugi strani pa mora biti zunanji parameter inicializiran znotraj metode, ki ji je posredovana.
- Med klicanjem, deklariranjem ali definiranjem metode je parameter ref izrecno deklariran kot ref. Po drugi strani pa, ko kličete, deklarirate ali definirate metodo, je parameter out izrecno deklariran kot out.
Sklep:
Kadarkoli se spremenljivka posreduje s sklicevanjem na metodo, se lahko uporabi ključna beseda ref in out. Ker so razlogi za uporabo obeh ključnih besed različni, kadar se lahko ključna beseda ref uporabi za spreminjanje vrednosti argumenta pred ključno besedo ref, ki je posredovana klicani metodi, in ključna beseda out se uporablja za vrnitev nazaj vrednosti argumenta pred tem s ključno besedo out.