Ero ref ja out välillä C #

Kirjoittaja: Laura McKinney
Luomispäivä: 2 Huhtikuu 2021
Päivityspäivä: 5 Saattaa 2024
Anonim
Ero ref ja out välillä C # - Tekniikka
Ero ref ja out välillä C # - Tekniikka

Sisältö


”Ref” ja “Out” ovat parametrien muokkaimia, joita käytetään C #: ssä. Ref ja out -toiminnolla voit välittää minkä tahansa arvotyypin sen viittaamalla mihin tahansa menetelmään. Syy minkä tahansa arvotyypin ohittamiseen viitteellä tuo esiin pääeron ref- ja out-avainsanojen välillä. viite avainsana sallii kutsutun menetelmän muuttaa sille siirretyn argumentin sisältöä ref-avainsanalla. ulos avainsana sallii kutsutun menetelmän palauttaa useampi kuin yksi arvo yhdellä puhelulla. Tutkitaan ero ref ja out välillä ja vertailukaavio.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetviiteulos
perustiedotSe sallii argumentin arvon muutoksen edetessä ref-avainsanaa.Se mahdollistaa menetelmän palauttaa arvot, joita edeltää avainsana.
alustusRef-parametri on alustettava ennen menetelmäkutsua.Out-parametri on alustettava kutsutun menetelmän sisällä ennen kuin se loppuu.
ilmoitusMenetelmällä muutettava parametri julistetaan ref: ksi, kun menetelmän ilmoitus ja menetelmän kutsu.Palautettava parametri on ilmoitettava viitteeksi menetelmän ilmoittamisen ja menetelmän kutsumisen yhteydessä.


Määritelmä Ref avainsana

”Ref” on parametrien muokkauslaite, jota käytetään, kun on tarpeen kutsua menetelmä kutsu-referenssillä. Kun haluamme, että kutsutun menetelmän sisällä argumentteihin tehdyt muutokset heijastuvat kyseisen muuttujan alkuperäisessä arvossa, käytetään ref-parametrin muokkainta. Arvotyyppiä, jonka haluamme ilmoittaa ref: nä, edeltää ref-avainsana menetelmän ilmoittamisen ja menetelmän kutsumisen aikana. Useampia kuin yksi parametri voidaan julistaa ”ref” -sovellukseksi, kun menetelmää kutsutaan ja julistetaan.

käyttämällä järjestelmää; luokka DemoRef {public void Square (ref int s) {s = s * s; }} luokka Ref_main {staattinen void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a ennen menetelmäsoittoa:" + a); ob.Square (viite a); // Käytetty ref Keyword Console.WriteLine ("puhelun jälkeen:" + a); }} // lähtö ennen menetelmäkutsua: 10 a menetelmäkutsujen jälkeen: 100

Yllä olevassa koodissa muuttuja 'a' johdetaan argumenttina menetelmästä Square (ref a) yhdessä siihen liitetyn parametrimuokkaimen ref kanssa. Se tarkoittaa mitä muutoksia menetelmä, jolla Square (ref a) suorittaa muuttujalla 'a' sen sisällä, heijastaa 'a': n alkuperäistä arvoa, myös menetelmän ulkopuolella.


On joitain tärkeitä seikkoja, jotka on muistettava, kun käsitellään parametrien muokkainta “ref”.

  • Argumentti, jonka lähetät ref-menetelmällä, on alustettava ennen menetelmän kutsumista.
  • Menetelmä ei saa antaa alkuperäistä arvoa ref-argumentille.
  • Voit käyttää viitettä myös referenssimuuttujan kanssa.

Määritelmä Out avainsana

Joka kerta kun soitat menetelmälle, se palauttaa vain yhden arvon. Jos haluat menetelmän palauttavan useamman kuin yhden arvon puhelussa, ”out” -sanaa on käytettävä niiden parametrien kanssa, jotka haluat palauttaa, kun menetelmä lopetetaan. Joskus on niin, että kun emme halua välittää mitään menetelmälle, vaan haluamme, että menetelmä palauttaa jotain, käytämme parametreja avainsanan kanssa.Ymmärretään se esimerkillä.

käyttämällä järjestelmää; luokan DemoOut {julkinen int Hajoaa (kaksinkertainen x, ulos kaksinkertainen fraktio) {int koko_num; kokonaisluku = (int) x; murto = x - kokonainen luku; palauta koko_num; }} luokka Out_maint {staattinen void Main () {DemoOut ob = new DemoOut (); int i; kaksoisrinta; i = ob.hajoa (100,125, ulosvirta); // käytetty käynyt avainsana Console.WriteLine ("Koko numeron osa on" + i); Console.WriteLine ("murto-osa on" + frakti); }} // ulostulo kokonaisluku on 100. Murtoluku on 0,125

Yllä olevassa koodissa kaksi arvoa palautetaan, menetelmä Decompose (). Yksi palauttaa avainsanalla “return”, ts. Kokonaisuus_numero, ja toinen se palauttaa parametrin, jota edeltää avainsana, kun menetelmä kutsuu eli “frac”.

Tärkeät seikat, jotka muistetaan avainsanasta.

  • Toisin kuin ref-avainsana, avainsanaa käyttävää parametria ei saa alustaa ennen menetelmän kutsumista.
  • Kutsuttu menetelmä itse antaa parametrille arvon ulkopuolisella avainsanalla, koska sitä pidetään osoittamattomana kutsutun menetelmän sisällä, ts. Sillä oletetaan olevan alkuarvo.
  • Kutsutun menetelmän on annettava arvo parametrille out ennen kuin menetelmä loppuu.
  • Ulos-avainsana soveltuu myös viitemuuttujaan.
  1. Kun muuttuja, jota edeltää ref-avainsana, siirretään mille tahansa menetelmälle, siihen menetelmän sisällä tehdyt muutokset heijastavat sen alkuperäistä arvoa. Kun menetelmälle siirrettyä muuttujaa edeltää avainsana, menetelmä palauttaa sen käyttämättä paluu-avainsanaa.
  2. Ref-parametri tulisi alustaa ennen kuin se siirretään menetelmälle. Toisaalta ulostuloparametri on alustettava menetelmässä, jolle se välitetään.
  3. Soitettaessa, ilmoitettaessa tai määritettäessä menetelmää ref-parametri julistetaan nimenomaisesti ref: ksi. Toisaalta, kun menetelmää kutsutaan, julistetaan tai määritetään, out-parametri julistetaan nimenomaisesti out-parametriksi.

johtopäätös:

Aina muuttujan on mentävä viittauksella menetelmään, ref- ja out-avainsanoja voidaan käyttää. Kun taas syy molempien avainsanojen käyttöön on erilainen, jos ref-avainsanaa voidaan käyttää argumentin arvon muuttamiseen, jota edeltää ref-avainsana, siirretään kutsutulle menetelmälle ja out-avainsanaa käytetään palauttamaan edeltävän argumentin arvo avainsanalla.