Rozdíl mezi ref a out v C #

Autor: Laura McKinney
Datum Vytvoření: 2 Duben 2021
Datum Aktualizace: 5 Smět 2024
Anonim
Rozdíl mezi ref a out v C # - Technologie
Rozdíl mezi ref a out v C # - Technologie

Obsah


„Ref“ a „Out“ jsou modifikátory parametrů používané v C #. Pomocí ref a out můžete předat jakýkoli typ hodnoty jeho odkazem na jakoukoli metodu. Důvod předání jakéhokoli typu hodnoty jeho referencí zavádí hlavní rozdíl mezi klíčovým slovem ref a out. ref klíčové slovo umožňuje volané metodě změnit obsah argumentu předaného pomocí klíčového slova ref. ven klíčové slovo umožňuje volanému způsobu vrátit více než jednu hodnotu při jednom volání. Pojďme studovat rozdíl mezi ref a out spolu s grafem srovnání.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníRefVen
ZákladníUmožňuje změnu hodnoty argumentu provedeného klíčovým slovem ref.Umožňuje metodě vrátit hodnoty, kterým předcházelo klíčové slovo out.
InicializaceParametr ref musí být inicializován před voláním metody.Před ukončením musí být parametr out inicializován uvnitř volané metody.
ProhlášeníParametr, který má být metodou změněn, je deklarován jako ref, zatímco deklarace metody a volání metody.Parametr, který má být vrácen, musí být deklarován jako ref, zatímco deklarace metody a volání metody.


Definice klíčového slova Ref

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

using System; class DemoRef {public void Square (ref ints) {s = s * s; }} třída Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("volání metody před:" + a); ob.Square (odkaz a); // Použitá konzole pro klíčové slovo ref.WriteLine ("a after call:" + 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ávána jako argument metodě Square (ref a) spolu s ref. Modifikátorem parametru ref. To znamená, že bez ohledu na to, jaké změny bude metoda Square (ref a) provádět s proměnnou „a“ uvnitř, bude se to odrážet v původní hodnotě „a“ mimo tuto metodu.


Při práci s modifikátorem parametru „ref“ je třeba mít na paměti několik důležitých bodů.

  • Argument, který předáváte odkazem na metodu, 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ého slova

Pokaždé, když voláte metodu, vrátí se pouze jedna hodnota. Pokud chcete, aby metoda vrátila více než jednu hodnotu při hovoru, musí být použito klíčové slovo „out“ spolu s parametry, které chcete vrátit, když je metoda ukončena. Někdy se stává, že když nechceme metodě předat nic, ale chceme, aby metoda vrátila něco zpět, použijeme parametry s klíčovým slovem out.Rozumíme tomu na příkladu.

using System; class DemoOut {public int Decompose (double x, out double zlomek) {int whole_num; celé_číslo = (int) x; zlomek = x - celé_číslo; návrat full_num; }} třída Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; double frac; i = ob.Decompose (100,125, out frac); // použité klíčové slovo Console.WriteLine („Celá část čísla je“ + i); Console.WriteLine ("zlomková část je" + frac); }} // výstup Celá část je 100 Zlomková část je 0,125

Ve výše uvedeném kódu jsou dvě metody vráceny metodou Decompose (). Jeden se vrací pomocí klíčového slova „return“, tj. Celé_num, a druhý vrací parametr, kterému předchází klíčové slovo out při volání metody, tj. „Frac“.

Důležité body, které si musíte pamatovat o klíčovém slově ven

  • Na rozdíl od klíčového slova ref nesmí být parametr využívající klíčové slovo inicializován před voláním metody.
  • Volaná metoda sama přiřadí hodnotu parametru s klíčovým slovem out, protože je považována za nepřiřazenou uvnitř volané metody, tj. Předpokládá se, že nemá počáteční hodnotu.
  • Před ukončením metody musí volaná metoda přiřadit hodnotu parametru out.
  • Klíčové slovo out je také použitelné pro referenční proměnnou.
  1. Když je proměnná předcházející klíčovému slovu ref předána jakékoli metodě, změny provedené uvnitř metody se projeví v její původní hodnotě. Pokud proměnné předané metodě předchází klíčové slovo out, metoda ji vrátí bez použití návratového klíčového slova.
  2. Parametr ref by měl být inicializován před tím, než je předán do metody. Na druhou stranu musí být parametr out inicializován uvnitř metody, do které je předán.
  3. Při volání, deklaraci nebo definování metody je parametr ref explicitně deklarován jako ref. Na druhou stranu, při volání, deklaraci nebo definování metody je parametr out explicitně deklarován jako out.

Závěr:

Kdykoli má být proměnná předána odkazem na metodu, lze použít klíčové slovo ref a out. Vzhledem k tomu, že důvod použití obou klíčových slov je odlišný, pokud lze klíčové slovo ref použít ke změně hodnoty argumentu, kterému předchází klíčové slovo ref, předané volané metodě a klíčové slovo out se používá k návratu zpět hodnoty argumentu, kterému předchází podle klíčového slova out.