Különbség a ref

Szerző: Laura McKinney
A Teremtés Dátuma: 2 Április 2021
Frissítés Dátuma: 5 Lehet 2024
Anonim
Különbség a ref - Technológia
Különbség a ref - Technológia

Tartalom


A „Ref” és az „Out” a C # -ben használt paraméter-módosítók. A ref és out használatával bármilyen értéktípust átadhat, hivatkozással bármilyen módszerre. Bármely értéktípus referenciaként történő átadásának oka bemutatja a ref és out kulcsszó közötti fő különbséget. Az ref A kulcsszó lehetővé teszi, hogy a meghívott módszer megváltoztassa a ref kulcsszóval átadott argumentum tartalmát. Az ki A kulcsszó lehetővé teszi a hívott módszernek, hogy egy hívásnál több értéket adjon vissza. Vizsgáljuk meg a ref és out közötti különbséget, összehasonlító táblázattal együtt.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaRefKi
AlapvetőEz lehetővé teszi az argumentum értékének megváltoztatását a ref kulcsszóval folytatva.Lehetővé teszi egy módszert az értékek visszaadására, amelyeket egy kimenő kulcsszó előz meg.
inicializálásA ref paramétert inicializálni kell a módszerhívás előtt.Az out paramétert inicializálni kell a meghívott módszer belsejében, mielőtt leáll.
NyilatkozatA metódus által megváltoztatandó paramétert refként deklarálják, míg a módszer deklarálását és a módszer hívását.A visszatérítendő paramétert ref-nek kell deklarálni, miközben a módszer deklarálása és a módszer hívása.


Meghatározása Ref Kulcsszó

A „ref” egy paraméter-módosító, amelyet akkor használunk, amikor szükség van egy módszer hívására referenciaként történő hívására. Ha azt akarjuk, hogy az argumentumokban a meghívott módszerben végrehajtott változások tükrözzék a változó eredeti értékét, akkor a ref paraméter módosítót használjuk. Az érték típusát, amelyet ref-ként akarunk kijelenteni, a „ref” kulcsszó előzi meg a módszer deklarálása és a metódus hívás során. Egynél több paraméter is kijelenthető „ref” -ként, miközben hívja és deklarálja a módszert.

rendszer használata; osztály DemoRef {public void Square (ref int s) {s = s * s; }} osztály Ref_main {statikus érvénytelen Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a metódus előtti hívás:" + a); ob.Square (ref a); // Használt ref Kulcsszókonzol.WriteLine ("a hívás után:" + a); }} // a módszerhívás előtti kimenet: 10 a módszerhívás után: 100

A fenti kódban az 'a' változó érvként kerül átadásra a Square (ref a) módszerhez, a hozzá csatolt ref paramétermódosítóval együtt. Ez azt jelenti, hogy bármi változtatja meg a módszer, amelyet a Square (ref a) hajt végre az 'a' változón, a benne szereplő 'a' eredeti értékében, az eljáráson kívül is.


Van néhány fontos szempont, amelyet meg kell emlékezni, amikor a „ref” paraméter-módosítóval foglalkozunk.

  • Az argumentumot, amelyet a ref-rel ad át egy módszernek, meg kell inicializálni a módszer meghívása előtt.
  • A módszer nem rendelheti el a kezdő értéket a ref argumentumhoz.
  • A ref értéket a referenciaváltozóval együtt is használhatja.

Meghatározása Out kulcsszó

Minden alkalommal, amikor egy módszert meghív, csak egyetlen értéket ad vissza. Ha azt szeretné, hogy egy módszer több értéket adjon vissza egy hívásnál, akkor az „out” kulcsszót kell használni azokkal a paraméterekkel együtt, amelyeket vissza szeretne adni, amikor a módszer befejeződik. Előfordul, hogy amikor nem akarunk semmit átadni a módszernek, hanem azt akarjuk, hogy a módszer visszaadjon valamit, akkor egy paramétert használunk egy ki kulcsszóval.Megértjük egy példával.

rendszer használata; osztály DemoOut {public int bontás (dupla x, kettős rész) {int teljes_szám; teljes_szám = (int) x; frakció = x - teljes_szám; visszatérő teljes szám; }} osztály Out_maint {statikus érvénytelen Main () {DemoOut ob = new DemoOut (); int i; kettős törés; i = ob.bontás (100,125, kitörés); // használt Console kulcsszó. WriteLine ("Az egész szám értéke" + i); Console.WriteLine ("frakció része" + frac); }} // kimeneti egész szám 100 A frakcionált rész 0,125

A fenti kódban a Decompose () módszer két értéket ad vissza. Az egyik a „visszatérés” kulcsszóval tér vissza, azaz a teljes_szám, a másik pedig egy olyan paramétert ad vissza, amelyet az „out” kulcsszó előz meg, míg a módszer az „frac”.

A fontos kulcsszavak, amelyekre emlékezni kell.

  • A ref kulcsszótól eltérően, a kulcsszót használó paramétert nem szabad inicializálni a módszer meghívása előtt.
  • A meghívott módszer önmagában egy értéket rendel a paraméterhez egy kimenő kulcsszóval, mivel azt úgy hívják, hogy a meghívott módszer belsejében nincs hozzárendelve, azaz feltételezik, hogy nincs kezdeti értéke.
  • A meghívott módszernek értéket kell hozzárendelnie a out paraméterhez, mielőtt a módszer befejeződik.
  • A ki kulcsszó a referenciaváltozóra is alkalmazható.
  1. Ha egy változót, amelyet a ref kulcsszó előz meg, bármelyik módszerre átadják, akkor a metódusban elvégzett változások az eredeti értékben tükröződnek. Ha a metódusnak átadott változót kihagyott kulcsszó előzi meg, akkor a módszer visszatérési kulcsszó használata nélkül adja vissza.
  2. A ref paramétert inicializálni kell, mielőtt azt átadnák egy módszerhez. Másrészt a kimeneti paramétert inicializálni kell abban a módszerben, amelyre továbbítják.
  3. A módszer meghívása, deklarálása vagy meghatározása közben a ref paramétert kifejezetten refként deklarálják. Másrészt, miközben egy metódust meghívnak, deklarálnak vagy definiálnak, az out paramétert kifejezetten kimenetként deklarálják.

Következtetés:

Amikor a változót át kell adni egy módszerre való hivatkozással, a ref és out kulcsszó használható. Mivel mindkét kulcsszó használatának oka eltér, ha a ref kulcsszó felhasználható a ref kulcsszó előtti argumentum értékének megváltoztatására, átadva a meghívott módszerhez, és az out kulcsszó az előző argumentum értékének visszatérítésére szolgál. a ki kulcsszó alapján.