Suositeltava, 2024

Toimituksen Valinta

Ero ref ja out välillä C #

"Ref" ja "Out" ovat parametreja, joita käytetään C #: ssä. Ref and out -toiminnolla voit siirtää minkä tahansa arvon tyypin viittaamalla mihin tahansa menetelmään. Syy siihen, että jokin arvotyyppi siirtyy viittauksellaan, viittaa tärkeimpään eroon ref- ja out-avainsanojen välillä. Ref- avainsana mahdollistaa kutsutun menetelmän muuttavan sille ref-avainsanalla välitetyn argumentin sisältöä. Avainsana sallii kutsutun menetelmän palauttaa useamman kuin yhden arvon yhteen puheluun. Tutkitaan eroa ref ja out sekä vertailukaavio.

Vertailukaavio

Vertailun perusteetviiteulos
perustiedotSe sallii muutoksen argumentin arvossa, jota jatkettiin ref-avainsanalla.Se mahdollistaa menetelmän palauttaa ne arvot, joita edeltää avainsana.
alustusRef-parametri on alustettava ennen menetelmäkutsua.Out-parametri on alustettava kutsutun menetelmän sisällä ennen kuin se päättyy.
ilmoitusMenetelmällä muutettava parametri julistetaan ref: ksi, kun menetelmäilmoitus ja menetelmäkutsut.Palautettava parametri on ilmoitettava ref: ksi, kun menetelmäilmoitus ja menetelmäkutsut.

Määritelmä Ref Avainsana

”Ref” on parametrimuutin, jota käytetään, kun on tarpeen kutsua menetelmää, jossa on kutsu-viite. Kun haluamme, että kutsutun menetelmän sisällä oleviin argumentteihin tehdyt muutokset heijastavat kyseisen muuttujan alkuperäistä arvoa, käytetään ref-parametrin muokkaajaa. Arvotyyppiä, jonka haluamme julistaa refiksi, edeltää ”ref” avainsana menetelmän ilmoituksen ja menetelmän kutsun yhteydessä. Useampi kuin yksi parametri voidaan julistaa "ref": ksi, kun kutsutaan ja ilmoitetaan menetelmä.

 käyttämällä järjestelmää; luokka DemoRef {public void Square (ref int s) {s = s * s; }} luokka Ref_main {static void Main () {DemoRef ob = uusi DemoRef (); int a = 10; Console.WriteLine ("a ennen menetelmäkutsua:" + a); ob.Square (ref a); // Käytetty ref Avainsana Console.WriteLine ("a jälkeen puhelu:" + a); }} // tulos ennen menetelmäkutsua: 10 a menetelmäkutsun jälkeen: 100 

Yllä olevassa koodissa muuttuja 'a' annetaan argumenttina menetelmäkentälle (ref a) ja siihen liitetty parametri-modifikaattori ref. Se tarkoittaa mitä muutoksia menetelmää Square (ref a) suorittaa muuttujalla 'a' sisällä se heijastaa alkuperäisen arvon "a", myös menetelmän ulkopuolella.

On joitakin tärkeitä kohtia, jotka on muistettava, kun käsitellään parametrin modifikaattoria ”ref”.

  • Argumentti, jonka olet ohittanut ref: stä menetelmään, on alustettava ennen menetelmän kutsumista.
  • Menetelmä ei saa antaa alkuarvoa ref-argumentille.
  • Voit myös käyttää ref-ohjelmaa myös viitemuuttujan kanssa.

Määritelmä Out Avainsana

Joka kerta, kun kutsut menetelmää, se palauttaisi vain yhden arvon. Jos haluat, että menetelmä palauttaa useamman kuin yhden arvon puheluun, on käytettävä avainsanaa yhdessä niiden parametrien kanssa, jotka haluat palauttaa, kun menetelmä lopetetaan. Joskus ei ole kyse siitä, että kun emme halua siirtää mitään menetelmälle, mutta haluamme, että menetelmä palaa takaisin, käytämme parametreja, joissa on avainsana. Ymmärrämme sen esimerkin avulla.

 käyttämällä järjestelmää; luokka DemoOut {public int Hajoaa (kaksinkertainen x, kaksoisfraktio) {int full_num; full_num = (int) x; fraktio = x - koko_num; palaa koko_num; }} class Out_maint {static void Main () {DemoOut ob = uusi DemoOut (); int i; kaksinkertainen frac; i = ob.Dompose (100, 125, ulos frac); // käytti avainsanaa Console.WriteLine ("Koko numero on" + i); Console.WriteLine ("murto-osa on + + frac); }} // lähtö Integer-osa on 100 Fraktion osa on 0, 125 

Yllä oleva koodi palauttaa kaksi arvoa, menetelmä hajoaa (). Yksi se palaa avainsanalla "paluu" eli koko_num, ja se palauttaa parametrin, jota edeltää avainsana, kun menetelmää kutsutaan eli "frac".

Tärkeitä asioita, jotka on syytä muistaa ulos avainsanasta.

  • Toisin kuin Ref-avainsana, parametria käyttäen avainsanaa ei saa alustaa ennen menetelmäkutsua.
  • Kutsuttu menetelmä määrittää itselleen arvon parametrille, jossa on avainsana, koska sitä pidetään määrittämättömänä kutsutun menetelmän sisällä, ts. Oletetaan, että sillä ei ole alkuarvoa.
  • Kutsutun menetelmän on annettava arvo ulosparametrille ennen kuin menetelmä päättyy.
  • Avainsana on myös sovellettavissa viitemuuttujaan.

Tärkeimmät erot Ref ja Out välillä C #

  1. Kun muuttuja, jota edeltää ref-avainsana, siirretään mihin tahansa menetelmään, sen sisällä tehdyt muutokset heijastavat sen alkuperäistä arvoa. Kun menetelmään siirtyvää muuttujaa edeltää avainsana, menetelmä palauttaa sen käyttämättä paluukoodia.
  2. Ref-parametri on alustettava ennen kuin se siirretään menetelmään. Toisaalta ulostuloparametrin tulee olla alustettu sen välittämän menetelmän sisällä.
  3. Kun kutsutaan, ilmoitetaan tai määritellään menetelmä, ref-parametri ilmoitetaan nimenomaisesti viitteeksi ref. Toisaalta menetelmää kutsuttaessa, ilmoittamalla tai määrittelemällä ulos parametri ilmoitetaan nimenomaisesti ulos.

johtopäätös:

Aina kun muuttuja on siirrettävä viittauksella menetelmään, voidaan käyttää ref- ja out-avainsanoja. Molempien avainsanojen käyttämisen syy on erilainen silloin, kun ref-avainsanaa voidaan käyttää muuttamaan argumenttia, jota edeltää ref-avainsana, joka on siirretty kutsutulle menetelmälle ja että avainsanaa käytetään palauttamaan edellisen argumentin arvon avainsanan avulla.

Top