Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp ref ir out C #

„Ref“ ir „Out“ yra parametrų modifikatoriai, naudojami „C“. Naudodami ref ir out, galite perduoti bet kokį vertės tipą savo nuoroda į bet kurį metodą. Priežastis, kodėl bet kokio tipo vertė perduodama pagal nuorodą, rodo pagrindinį skirtumą tarp raktinio žodžio ir išeities. „ Ref“ raktinis žodis leidžia vadinamajam metodui pakeisti argumentą, perduotą jam su „ref“ raktiniu žodžiu. Iš raktinio žodžio leidžiama vadinti metodą, kai vienas skambutis grąžina daugiau nei vieną vertę. Ištirkime skirtumą tarp ref ir out kartu su palyginimo diagrama.

Palyginimo diagrama

Palyginimo pagrindasNuorIšeiti
PagrindinisTai leidžia pakeisti argumento reikšmę, atliekamą su ref raktiniu žodžiu.Tai leidžia metodą grąžinti tas vertybes, prieš kurias yra raktinis žodis.
InicijavimasRef parametras turi būti inicijuotas prieš metodas.Išeinantis parametras turi būti inicijuotas vadinamojo metodo viduje prieš jį baigiant.
DeklaracijaParametras, kurį reikia keisti metodu, deklaruojamas kaip ref, o metodas deklaruojamas ir metodas.Grąžintinas parametras turi būti deklaruojamas kaip ref, o metodas deklaravimas ir metodas.

Ref raktinio žodžio apibrėžimas

„Ref“ yra parametro modifikatorius, naudojamas, kai reikia paskambinti metodu, kuriam suteikta nuoroda pagal skambučius. Kai norime, kad pakeitimai, padaryti argumentų viduje vadinamame metode, turėtų atspindėti pradinę šio kintamojo vertę, tuomet naudojamas ref parametrų modifikatorius. Vertės tipą, kurį norime paskelbti kaip ref, prieš prasideda „ref“ raktinis žodis metodo deklaravimo metu ir metodo skambinimas. Skambinant ir deklaruojant metodą, daugiau nei vienas parametras gali būti deklaruojamas kaip „ref“.

 naudojant sistemą; klasės DemoRef {public void Square (ref int s) {s = s * s; }} klasė Ref_main {static void Main () {DemoRef ob = naujas DemoRef (); int a = 10; „Console.WriteLine“ („a prieš metodo skambutį:“ + a); ob.Square (ref a); // Naudota ref Raktažodžių konsolė.WriteLine („a po pokalbio:“ + a); }} // išvesties prieš skambinant metodas: 10 a po metodo skambučio: 100 

Pirmiau pateiktame kode kintamasis „a“ perduodamas kaip argumentas metodo kvadratui (ref a) kartu su parametro modifikatoriumi ref. Tai reiškia, kad bet kokie pakeitimai metodu „Square“ (ref a) atliks kintamąjį „a“ viduje, jis atspindės pradinę „a“ reikšmę, ne tik metodą.

Yra keletas svarbių dalykų, kuriuos reikia prisiminti sprendžiant parametrų modifikatorių „ref“.

  • Argumentas, kurį jūs perduodate per metodą, turi būti inicijuotas prieš skambinant į metodą.
  • Metodas neturi priskirti pradinės vertės ref argumentui.
  • Taip pat galite naudoti ref kartu su nuorodos kintamuoju.

Išeities raktinio žodžio apibrėžimas

Kiekvieną kartą, kai skambinate metodu, jis grąžins tik vieną vertę. Jei norite, kad pokalbio metu būtų grąžinta daugiau nei viena vertė, raktinis žodis „out“ turi būti naudojamas kartu su parametrais, kuriuos norite grįžti, kai metodas nutraukiamas. Kartais tai yra atvejis, kai mes nenorime nieko perduoti metodui, bet norime, kad metodas grįžtų kažką, kad mes naudojame parametrus su išeinančiu raktiniu žodžiu. Suprasime jį su pavyzdžiu.

 naudojant sistemą; klasės DemoOut {public int Skilimas (dviguba x, iš dvigubos frakcijos) {int visa_num; visa_numas = (int) x; frakcija = x - visa_num; grįžti visa; }} class Out_maint {static void Main () {DemoOut ob = naujas DemoOut (); int i; dvigubo frac; i = ob.Decompose (100.125, iš frac); // išnaudojo raktinį žodį „Console.WriteLine“ („Visas skaičius yra„ + i “); Console.WriteLine ("frakcijos dalis yra" + frac); }} // produkcija Bendra dalis yra 100 Frakcinė dalis yra 0.125 

Pirmiau pateiktame kode du metodai grąžinami, metodas Sumažėja (). Vienas jis grįžta pagal raktinį žodį „grįžti“, ty visa_num, o kitas grąžina parametrą, prieš kurį nurodomas raktinis žodis, o metodas, vadinamas „frac“.

Svarbūs dalykai, kuriuos reikia prisiminti dėl raktinio žodžio.

  • Skirtingai nuo ref raktažodžio, parametras naudojant raktinį žodį neturi būti inicijuojamas prieš skambinant į metodą.
  • Skambinantis metodas pats priskiria parametrui reikšmę su išvestiniu raktiniu žodžiu, nes jis laikomas nepaskirtu vadinamojo metodo viduje, ty manoma, kad neturi pradinės vertės.
  • Prieš metodas baigiamas, priskirtas metodas turi priskirti reikšmę išoriniam parametrams.
  • Šis raktinis žodis taip pat taikomas nuorodos kintamajam.

Pagrindiniai skirtumai tarp Ref ir Out C #

  1. Kai kintamasis, prieš kurį prasideda ref raktinis žodis, yra perduodamas bet kuriam metodui, tada pakeitimai, atlikti joje, atspindi pradinę vertę. Kai prie metodo perduodamas kintamasis yra prieš raktinį žodį, metodas grąžina jį nenaudodamas grąžinimo raktinio žodžio.
  2. Ref parametras turi būti inicijuotas prieš perduodant jį metodui. Kita vertus, išeinantis parametras turi būti inicijuotas metodo, kurį jis perduoda, viduje.
  3. Skambinant, deklaruojant ar apibrėžiant metodą, ref parametras yra aiškiai deklaruojamas kaip ref. Kita vertus, skambinant, deklaruojant ar apibrėžiant metodą, išreikštas parametras yra aiškiai deklaruojamas.

Išvada:

Kai kintamasis bus perduotas nuoroda į metodą, gali būti naudojamas ref ir out raktinis žodis. Kadangi abiejų raktinių žodžių naudojimo priežastys yra skirtingos, kai ref raktažodžio gali būti naudojamas keisti argumento, prieš kurį yra prieš raktinį žodį, vertę, perkeliamą į vadinamąjį metodą, o iš raktinio žodžio naudojamas grįžti atgal prieš argumentą pagal raktinį žodį.

Top