Doporučená, 2021

Redakce Choice

Rozdíl mezi ref a out v C #

„Ref“ a „Out“ jsou modifikátory parametrů používané v C #. Pomocí ref a out můžete předat jakýkoliv typ hodnoty odkazem na jakoukoliv metodu. Důvodem přechodu libovolného typu hodnoty podle jeho odkazu je hlavní rozdíl mezi klíčovým slovem ref a out. Klíčové slovo ref umožňuje, aby volaná metoda změnila obsah argumentu, který jí byl předán klíčovým slovem ref. Klíčové slovo out umožňuje zavolat metodu vrátit více než jednu hodnotu při jednom volání. Pojďme studovat rozdíl mezi ref a out spolu s srovnávací graf.

Srovnávací graf

Základ pro porovnáníRefVen
ZákladníTo dovoluje změnu hodnoty argumentu, který byl proveden s klíčovým slovem ref.Umožňuje metodě vrátit tyto hodnoty předcházející klíčové slovo out.
InicializaceParametr ref musí být inicializován před voláním metody.Parametr out musí být inicializován uvnitř volaného způsobu před jeho ukončením.
ProhlášeníParametr, který má být změněn metodou, je deklarován jako ref při deklaraci metody a volání metody.Vrácený parametr musí být deklarován jako ref při deklaraci metody a volání metody.

Definice klíčového slova Ref

„Ref“ je modifikátor parametrů, který se používá, když je potřeba zavolat metodu s odkazem na volání. Pokud chceme, aby změny provedené v argumentech uvnitř volané metody odrážely původní hodnotu této proměnné, pak se použije modifikátor parametru ref. Typu hodnoty, který chceme deklarovat jako ref, předchází klíčové slovo „ref“ během deklarace metody a volání metody. Při volání a deklaraci metody lze deklarovat více než jeden parametr jako „ref“.

 pomocí systému; třída DemoRef {public void Náměstí (ref int s) {s = s * s; }} class Ref_main {static void Hlavní () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a před voláním metody:" + a); ob.Square (ref a); // Použité ref Klíčové slovo Console.WriteLine ("a po volání:" + a); }} // výstup před voláním metody: 10 a po volání metody: 100 

Ve výše uvedeném kódu je proměnná 'a' předána jako argument na metodu Square (ref a) spolu s modifikátorem parametrů ref připojeným k ní. To znamená, že jakékoli změny metody Náměstí (ref a) budou provádět na proměnné „a“ uvnitř ní se budou odrážet v původní hodnotě „a“ mimo metodu.

Tam jsou některé důležité body, které je třeba mít na paměti při jednání s parametrem modifikátor "ref".

  • Argument, který předáváte metodou ref, musí být inicializován před voláním metody.
  • Metoda nesmí přiřadit počáteční hodnotu argumentu ref.
  • Můžete také použít ref spolu s referenční proměnnou.

Definice Out klíčových slov

Pokaždé, když zavoláte metodu, vrátí pouze jednu hodnotu. Pokud chcete, aby metoda při volání vrátila více než jednu hodnotu, musí se použít klíčové slovo „out“ spolu s parametry, které chcete vrátit zpět při ukončení metody. Někdy je tomu tak v případě, že nechceme nic předávat metodě, ale chceme, aby metoda vrátila něco, co používáme, s parametry mimo klíčové slovo. Pochopme to s příkladem.

 pomocí systému; třída DemoOut {public int Decompose (double x, out double double) {int full_num; full_num = (int) x; zlomek = x - celé_num; return Whole_num; }} class Out_maint {static void Hlavní () {DemoOut ob = new DemoOut (); int i; double frac; i = ob.Decompose (100.125, out frac); // používá klíčové slovo Console.WriteLine ("Celá část čísla je" + i); Console.WriteLine ("zlomková část je" + frac); }} // výstup Celá část je 100 Frakční část je 0.125 

Ve výše uvedeném kódu jsou dvě hodnoty vráceny metodou Decompose (). Vrátí se klíčovým slovem „return“, tj. Full_num, a další vrací parametr, kterému předchází klíčové slovo out, zatímco metoda volá „frac“.

Důležité body k zapamatování si o klíčovém slově out.

  • Na rozdíl od ref klíčového slova nesmí být parametr, který používá klíčové slovo out, inicializován před voláním metody.
  • Zavolaná metoda sama o sobě přiřadí hodnotu parametru s klíčovým slovem out, protože je považována za nepřiřazenou v rámci metody, tj. Předpokládá se, že nemá žádnou počáteční hodnotu.
  • Volaná metoda musí přiřadit parametr out před ukončením metody.
  • Klíčové slovo out je také použitelné pro referenční proměnnou.

Klíčové rozdíly mezi Ref a Out v C #

  1. Když proměnná předcházející klíčovému slovu ref je předána jakékoli metodě, pak změny provedené v rámci metody se odráží v její původní hodnotě. Pokud proměnné předané metodě předchází klíčové slovo out, metoda jej vrátí bez použití návratového klíčového slova.
  2. Parametr ref by měl být inicializován před jeho předáním metodě. Na druhé straně musí být parametr out inicializován uvnitř metody, do které je předán.
  3. Při volání, deklarování nebo definování metody je parametr ref explicitně deklarován jako ref. Na druhé straně při volání, deklaraci nebo definování metody je parametr out explicitně deklarován jako out.

Závěr:

Kdykoliv má být proměnná předána odkazem na metodu, může být použito klíčové slovo ref a out. Zatímco důvod použití obou klíčových slov je odlišný tam, kde klíčové slovo ref může být použito ke změně hodnoty argumentu, kterému předchází klíčové slovo ref, předáno volanému způsobu a klíčové slovo out je použito k návratu hodnoty argumentu předcházejícího klíčovým slovem out.

Top