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

ref (odniesienie) Parametr

Parametr „ref” służy do przekazania wartości przez odniesienie z parametru rzeczywistego do parametru formalnego, tj. Z metody wywoływanej do metody wywoływanej. W języku C # parametr zadeklarowany za pomocą modyfikatora „ref” jest parametrem odniesienia. Po przekazaniu parametrów przez odniesienie, w przeciwieństwie do parametrów wartości, dla tego parametru nie jest tworzona nowa lokalizacja. Wszelkie zmiany w parametrze formalnym zostaną odzwierciedlone w parametrze rzeczywistym.

Przykład parametru ref
Jak pokazano w powyższym fragmencie programu, wszelkie zmiany dokonane w m zostaną odzwierciedlone w n, ponieważ parametr jest przekazywany przez odwołanie.

parametr wyjściowy (wyjściowy)

Parametr wyjściowy służy do przekazania wyniku z powrotem do funkcji wywołującej. Słowo kluczowe „out” służy do zadeklarowania parametru jako parametru wyjściowego. Podobnie jak parametr referencyjny, parametr wyjściowy nie tworzy nowej lokalizacji pamięci. Zamiast tego staje się aliasem parametru w metodzie wywołującej.

Przykład parametru out
W powyższym programie x jest deklarowany jako parametr wyjściowy funkcji wywołującej i, jak widać, x nie został zainicjowany. Po zakończeniu funkcji Kwadrat wartość q zostanie skopiowana do parametru wyjściowego x.

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

  1. W parametrze referencyjnym zmiany dokonane w parametrze formalnym odzwierciedlają rzeczywisty parametr, natomiast w parametrze wyjściowym wartość jest odzwierciedlana z powrotem do parametru wyjściowego funkcji wywołującej.
  2. Rzeczywistemu parametrowi „wyjściowemu” zwykle nie przypisuje się wartości, natomiast parametrowi rzeczywistemu zadeklarowanemu jako odniesienie należy zawsze przypisać wartość przed wywołaniem.
    Uwaga: Musisz przypisać wartość do parametru out w treści metody; w przeciwnym razie metoda nie zostanie skompilowana.
  3. Zarówno parametry out, jak i ref nie tworzą nowej lokalizacji pamięci.
  4. Parametry ref i out są traktowane inaczej w czasie wykonywania, ale są traktowane tak samo w czasie kompilacji.
TO