Różnica między parametrem Ref i Out w C#

Różnica między parametrem Ref i Out w C#

Parametr ref (odniesienia)

Parametr „Ref” służy do przekazywania wartości przez odniesienie z rzeczywistego parametru do parametru formalnego I.e od metody Callee do nazywanej metody. W C#parametr zadeklarowany modyfikatorem „Ref” jest parametrem odniesienia. Po przekazywaniu parametrów przez odniesienie, w przeciwieństwie do parametrów wartości, dla tego parametru nie jest tworzona nowa lokalizacja. Wszelkie zmiany wprowadzone w parametrze formalnym będą odzwierciedlać w rzeczywistym parametrze.

Przykład parametru ref
Jak pokazano w powyższym fragmencie programu, wszelkie zmiany dokonane na M zostaną odzwierciedlone do N, ponieważ parametr jest przekazywany przez odniesienie.

Parametr out (wyjściowy)

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

Przykład parametru out
W powyższym programie x jest zadeklarowane jako parametr poza funkcją wywoływania i jak widać, x nie został zainicjowany. Gdy funkcja kwadratowa kończy się, wartość Q zostanie skopiowana do parametru wyjściowego x.

Różnica między parametrem Ref i Out w C#

  1. W parametrze referencyjnym zmiany wprowadzone w parametrze formalnym odzwierciedlają faktyczny parametr, podczas gdy w parametrze out wartość jest odzwierciedlona do parametru funkcji wywołania.
  2. Rzeczywisty parametr „wyjściowy” zwykle nie przypisał wartości, podczas gdy rzeczywisty parametr zadeklarowany jako odniesienie powinien być zawsze przypisywany wartość przed wywołaniem.
    Notatka: Musisz przypisać wartość do parametru out w ciele 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ą one takie same w czasie kompilacji.