Ajánlott, 2024

Szerkesztő Választása

A különbség a ref és out között C #

A „Ref” és az „Out” a C # paraméterben használt paraméter módosítók. A ref és out használatával bármely érték típusát tetszőleges módszerre hivatkozva átadhatja. Bármely értéktípus átadásának oka annak, hogy a referencia bevezeti a fő különbséget a ref és out kulcsszó között. A ref kulcsszó lehetővé teszi, hogy a hívott módszer megváltoztassa a ref kulcsszóval átadott argumentum tartalmát. A kihagyott kulcsszó lehetővé teszi, hogy a hívott módszer több értéket adjon vissza egyetlen hívásnál. Vizsgáljuk meg a ref és out közötti különbséget az összehasonlító táblázattal együtt.

Összehasonlító táblázat

Az összehasonlítás alapjaRefKi
AlapvetőLehetővé teszi az argumentum értékének módosítását a ref kulcsszóval.Lehetővé teszi egy olyan módszer visszaadását, amely előtt egy kulcsszó szerepel.
inicializálásA ref paramétert a módszerhívás előtt kell inicializálni.A kimeneti paramétert inicializálni kell a hívott módszeren belül, mielőtt leáll.
NyilatkozatA módszer által módosítandó paramétert refként deklaráljuk, míg a módszertani nyilatkozatot és a módszerhívást.A visszaküldendő paramétert refként kell bejelenteni, míg a módszertani nyilatkozatot és a módszerhívást.

A kulcsszó meghatározása

A „ref” egy paraméter-módosító, amelyet akkor használunk, ha a hívás utáni módszerrel hívunk. Ha azt szeretnénk, hogy a hívott módszeren belüli argumentumok módosításai tükrözzék az adott változó eredeti értékét, akkor a ref paraméter módosítót használjuk. Az értéktípust, amelyet refként kívánunk bejelenteni, a „ref” kulcsszó előzi meg a módszertani nyilatkozat és a módszerhívás során. Egynél több paramétert lehet „ref” -nek nyilvánítani a módszer hívása és bejelentése során.

 a Rendszer használata; osztály DemoRef {public void Square (ref int s) {s = s * s; }} osztály Ref_main {static void Main () {DemoRef ob = új DemoRef (); int a = 10; Console.WriteLine ("a módszer előtt hívás:" + a); ob.Square (ref a); // A ref kulcsszókonzol.WriteLine ("a utáni hívás:" + a); }} // kimenet a módszerhívás előtt: 10 a módszerhívás után: 100 

A fenti kódban az 'a' változó argumentumként kerül átadásra a módszer négyzetéhez (ref a) és a hozzá csatolt reflexiós paraméterrel. Ez azt jelenti, hogy bármi változik a metódus téren (ref a) a "a" változón belül, akkor az "a" eredeti értékét is tükrözi a módszeren kívül is.

Vannak olyan fontos pontok, amelyekre a „ref” paraméter módosításával foglalkoznunk kell.

  • A módszer által átirányított argumentumot a módszer hívás előtt kell inicializálni.
  • A módszer nem rendelheti a kezdeti értéket a ref argumentumhoz.
  • A ref a referencia változóval együtt is használható.

Az Out kulcsszó meghatározása

Minden alkalommal, amikor egy módszert hívunk, 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 azon paraméterekkel együtt, amelyeket vissza kíván térni a módszer leállításakor. Néha előfordul, hogy amikor nem akarunk semmit átadni a módszernek, de azt szeretnénk, ha a módszer visszaállna valamit, olyan paramétereket használunk, amelyek egy kihagyott kulcsszóval rendelkeznek. Megértjük egy példával.

 a Rendszer használata; osztály DemoOut {public int Bomlik (kettős x, kettős kettős frakció) {int full_num; full_num = (int) x; frakció = x - teljes érték; teljes egészében visszatér; }} class Out_maint {static void Main () {DemoOut ob = új DemoOut (); int i; kettős frac; i = ob.Decose (100, 125, out frac); // kihasználta a Console.WriteLine kulcsszót ("Teljes szám" + i); Console.WriteLine ("frakciórész" + frac); }} // kimenet A teljes rész 100 darab 

A fenti kódnál két érték kerül visszajuttatásra, a módszer lebontása (). Az egyik a „visszatérés” kulcsszóval egészül ki, azaz az egész_num, és egy másik paramétert ad vissza, amelyet előzőleg a kulcsszó jelez, míg a módszer a „frac”.

A kulcsfontosságú pontok, amelyekre emlékezni kell a kihagyott kulcsszóról.

  • A ref kulcsszóval ellentétben a kihagyó kulcsszót használó paramétert nem szabad inicializálni a módszerhívás előtt.
  • A hívott módszer önmagában hozzárendel egy értéket a paraméterhez egy kihagyott kulcsszóval, mivel úgy tekintik, hogy nincs hozzárendelve a hívott módszeren belül, azaz feltételezzük, hogy nincs kezdeti értéke.
  • A hívott módszernek értéket kell rendelnie a kimeneti paraméterhez, mielőtt a módszer leáll.
  • Az out kulcsszó a referencia változóra is alkalmazható.

A C és C közötti különbségek a C #

  1. Ha a ref kulcsszó előtti változó bármely módszerre kerül átadásra, akkor a módszeren belüli változtatások az eredeti értékét tükrözik. Ha egy módszerre átvitt változó előtt kulcsszó jelenik meg, a módszer visszatérési kulcsszó használata nélkül visszaküldi azt.
  2. A ref paramétert inicializálni kell, mielőtt egy eljárást továbbítanánk. Másrészről az out paramétert az átadott módszeren belül kell inicializálni.
  3. A módszer hívása, bejelentése vagy meghatározása során a ref paraméter kifejezetten ref. Másrészről, ha egy módszert hívunk, deklarálunk vagy definiálunk, az out paraméter kifejezetten kijelentésre kerül.

Következtetés:

Ha a változót egy módszerre való hivatkozással kell továbbítani, akkor a ref és out kulcsszó használható. Míg a két kulcsszó használatának oka más, ahol a ref kulcsszó felhasználható a ref kulcsszó előtti érv értékének megváltoztatására, amelyet a hívott módszerhez továbbítanak, és az out kulcsszó segítségével visszaállíthatja a megelőző argumentum értékét az out kulcsszó segítségével.

Top