Różnica między ref i out w C #

Autor: Laura McKinney
Data Utworzenia: 2 Kwiecień 2021
Data Aktualizacji: 5 Móc 2024
Anonim
Różnica między ref i out w C # - Technologia
Różnica między ref i out w C # - Technologia

Zawartość


„Ref” i „Out” to modyfikatory parametrów używane w języku C #. Za pomocą ref i out można przekazać dowolny typ wartości przez odniesienie do dowolnej metody. Powód przekazania dowolnego typu wartości przez odniesienie wprowadza główną różnicę między słowem kluczowym ref i out. The ref Słowo kluczowe pozwala wywoływanej metodzie zmienić treść argumentu przekazanego do niej za pomocą słowa kluczowego ref. The na zewnątrz słowo kluczowe pozwala wywoływanej metodzie zwrócić więcej niż jedną wartość w jednym wywołaniu. Przeanalizujmy różnicę między ref a out wraz z tabelą porównawczą.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaNr refNa zewnątrz
PodstawowyPozwala na zmianę wartości argumentu poprzedzonego słowem kluczowym ref.Pozwala metodzie zwrócić te wartości poprzedzone słowem kluczowym out.
InicjalizacjaParametr ref musi zostać zainicjowany przed wywołaniem metody.Parametr wyjściowy musi zostać zainicjowany w wywoływanej metodzie przed jej zakończeniem.
DeklaracjaParametr, który ma zostać zmieniony przez metodę, jest zadeklarowany jako ref podczas deklaracji metody i wywołania metody.Zwracany parametr musi być zadeklarowany jako ref podczas deklaracji metody i wywołania metody.


Definicja słowa kluczowego Ref

„Ref” to modyfikator parametru używany, gdy zachodzi potrzeba wywołania metody z wywołaniem przez referencję. Jeśli chcemy, aby zmiany wprowadzone w argumentach w wywoływanej metodzie musiały odzwierciedlać pierwotną wartość tej zmiennej, wówczas używany jest modyfikator parametru ref. Typ wartości, który chcemy zadeklarować jako odwołanie, poprzedza słowo kluczowe „ref” podczas deklaracji metody i wywołania metody. Więcej niż jeden parametr można zadeklarować jako „ref” podczas wywoływania i deklarowania metody.

using System; klasa DemoRef {public void Square (ref int s) {s = s * s; }} klasa Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine („wywołanie metody przed:” + a); ob.Square (zob. a); // Używane słowo kluczowe Console.WriteLine („po wywołaniu:” + a); }} // wypisuje przed wywołaniem metody: 10 a po wywołaniu metody: 100

W powyższym kodzie zmienna „a” jest przekazywana jako argument do metody Square (ref a) wraz z dołączonym do niej modyfikatorem parametru ref. Oznacza to, że wszelkie zmiany, które metoda Kwadrat (oznaczenie a) wykona dla zmiennej „a” w środku, będą odzwierciedlać pierwotną wartość „a”, również poza metodą.


Jest kilka ważnych punktów, o których należy pamiętać, mając do czynienia z modyfikatorem parametru „ref”.

  • Argument przekazywany przez odwołanie do metody musi zostać zainicjowany przed wywołaniem metody.
  • Metoda nie może przypisywać wartości początkowej do argumentu ref.
  • Możesz także użyć ref wraz ze zmienną referencyjną.

Definicja słowa kluczowego Out

Każde wywołanie metody zwróci tylko jedną wartość. Jeśli chcesz, aby metoda zwróciła więcej niż jedną wartość podczas wywołania, należy użyć słowa kluczowego „out” wraz z parametrami, które chcesz zwrócić po zakończeniu metody. Czasami zdarza się, że gdy nie chcemy niczego przekazywać do metody, ale chcemy, aby metoda zwróciła coś, używamy parametrów ze słowem kluczowym out.Rozumiemy to na przykładzie.

using System; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; liczba_całkowita = (int) x; ułamek = x - liczba_całkowita; zwraca wartość liczba_całkowita; }} klasa Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; podwójny frac; i = ob. rozkład (100,125, bez frac); // użyto słowa kluczowego Console.WriteLine („Część całkowita to” + i); Console.WriteLine („część ułamkowa to” + frac); }} // output Część całkowita to 100 Część ułamkowa to 0,125

W powyższym kodzie dwie wartości są zwracane przez metodę Decompose (). Jeden zwraca słowem kluczowym „return”, tzn. Całością_num, a drugi zwraca parametr poprzedzony słowem kluczowym out podczas wywoływania metody, np. „Frac”.

Ważne punkty do zapamiętania na temat słowa kluczowego out.

  • W przeciwieństwie do słowa kluczowego ref, parametr używający słowa kluczowego out nie może być inicjowany przed wywołaniem metody.
  • Wywołana metoda sama przypisuje wartość do parametru słowem kluczowym out, ponieważ jest ona uważana za nieprzypisaną wewnątrz wywoływanej metody, tzn. Zakłada się, że nie ma wartości początkowej.
  • Wywołana metoda musi przypisać wartość do parametru out przed zakończeniem metody.
  • Słowo kluczowe out ma również zastosowanie do zmiennej referencyjnej.
  1. Gdy zmienna poprzedzona słowem kluczowym ref jest przekazywana do dowolnej metody, zmiany wprowadzone w niej w metodzie odzwierciedlają jej oryginalną wartość. Gdy zmienna przekazana do metody jest poprzedzona słowem kluczowym out, metoda zwraca ją bez użycia słowa kluczowego return.
  2. Parametr ref powinien zostać zainicjowany przed przekazaniem go do metody. Z drugiej strony parametr wyjściowy musi zostać zainicjowany w metodzie, do której jest przekazywany.
  3. Podczas wywoływania, deklarowania lub definiowania metody parametr ref jest jawnie deklarowany jako ref. Z drugiej strony, podczas wywoływania, deklarowania lub definiowania metody parametr out jest jawnie deklarowany jako out.

Wniosek:

Ilekroć zmienna ma być przekazywana przez odwołanie do metody, można użyć słowa kluczowego ref i out. Podczas gdy powód użycia obu słów kluczowych jest inny, w przypadku gdy słowo kluczowe ref może być użyte do zmiany wartości argumentu poprzedzonego słowem kluczowym ref, przekazane do wywoływanej metody, a słowo kluczowe out służy do zwrócenia wartości poprzedzającego argumentu według słowa kluczowego out.