Разлика между параметър ref и out в c #

ref (Справочен) параметър

Параметърът "ref" се използва за предаване на стойността чрез препратка от действителния параметър към официалния параметър, т.е. от метода на callee до наречения метод. В C # параметър, деклариран с модификатор „ref“, е референтен параметър. Когато предавате параметри по референция, за разлика от параметрите на стойността, ново местоположение не се създава за този параметър. Всички промени, направени във формалния параметър, ще се отразяват в действителния параметър.

Пример за ref Параметър
Както е показано в горния фрагмент на програмата, всички промени, направени в m, ще бъдат отразени на n, тъй като параметърът се предава чрез препратка.

изход (изход) параметър

Изходният параметър се използва за връщане на резултата обратно към извикващата функция. Ключовата дума "out" се използва за деклариране на параметъра като параметър на изхода. Подобно на референтен параметър, изходният параметър не създава ново място за съхранение. Вместо това тя се превръща в псевдоним на параметъра в метода на повикване.

Пример за параметър
В горната програма x се декларира като изходящ параметър във функцията за повикване и както можете да видите, x не е инициализиран. Когато функцията Square прекрати, стойността на q ще бъде копирана в изходния параметър x.

Разлика между параметър ref и out в C #

  1. В референтния параметър промените, направени във формалния параметър, отразяват действителния параметър, докато в изходния параметър стойността се отразява обратно към изходящия параметър на извикващата функция.
  2. Действителният параметър „изход“ обикновено не присвоява стойност, докато действителен параметър, деклариран като референтен, винаги трябва да бъде присвоен на стойност, преди да се обади.
    Забележка: Трябва да присвоите стойност на параметъра out в тялото на метода; в противен случай методът няма да бъде компилиран.
  3. Параметрите за вън и за ref не създават ново място в паметта.
  4. Параметрите ref и out се третират различно по време на изпълнение, но те се третират еднакви по време на компилиране.