Рекомендуємо, 2021

Вибір Редакції

Різниця між виразом і з в C #

“Ref” та “Out” є модифікаторами параметрів, що використовуються в C #. Використовуючи ref і out, ви можете передати будь-який тип значення за його посиланням на будь-який метод. Причиною передачі будь-якого типу значення за його посиланням є основна відмінність між ключовим словом ref і out. Ключове слово ref дозволяє викликаному методу змінювати вміст аргументу, переданого йому за допомогою ключового слова ref. Ключове слово out дозволяє викликати метод, щоб повернути більше одного значення при одному виклику. Давайте вивчимо різницю між ref та out разом з діаграмою порівняння.

Діаграма порівняння

Основа для порівнянняRefOut
ОсновнийВона дозволяє змінювати значення аргументу, що виходило з ключового слова ref.Це дозволяє методу повертати ті значення, яким передує вихідне ключове слово.
ІніціалізаціяПараметр ref повинен бути ініціалізований до виклику методу.Параметр out повинен бути ініціалізований всередині викликаного методу, перш ніж він закінчиться.
ДеклараціяПараметр, який потрібно змінити методом, оголошується як ref, а оголошення та метод виклику методу.Повернутий параметр повинен бути оголошений як ref, а оголошення та метод виклику методу.

Визначення ключового слова Ref

"Ref" - це модифікатор параметрів, який використовується, коли існує необхідність викликати метод з викликом за посиланням. Коли ми хочемо, щоб зміни, внесені в аргументи всередині викликаного методу, відображалися у вихідному значенні цієї змінної, тоді використовується модифікатор параметра ref. Типу значення, яке ми хочемо оголосити як ref, передує ключове слово "ref" під час оголошення методу і виклик методу. Більш ніж один параметр може бути оголошений як “ref” під час виклику та оголошення методу.

 використання системи; клас DemoRef {public void Square (ref int s) {s = s * s; }} клас Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("перед викликом методу:" + a); ob.Square (ref a); // Використовується реф ключове слово Console.WriteLine ("після виклику:" + a); }} // вивести a перед викликом методу: 10 a після виклику методу: 100 

У наведеному вище коді змінна 'a' передається як аргумент методу Square (ref a) разом з модифікатором параметра ref, прикріпленим до нього. Це означає, що будь-яка зміна методу Square (ref a) буде виконуватися на змінну 'a' всередині неї буде відображатися у вихідному значенні 'a', поза межами методу також.

Є кілька важливих моментів, які необхідно пам'ятати при роботі з модифікатором параметрів “ref”.

  • Аргумент, який ви передаєте за методом ref, повинен бути ініціалізований до виклику методу.
  • Метод не повинен призначати початкове значення аргументу ref.
  • Ви також можете використовувати ref разом зі змінною посиланням.

Визначення ключового слова Out

Щоразу, коли ви викликаєте метод, він повертає лише одне значення. Якщо ви хочете, щоб метод повертав більше одного значення при виклику, ключове слово "out" повинно використовуватися разом з параметрами, які потрібно повернути назад, коли метод припинено. Іноді буває так, що коли ми не хочемо нічого передавати методу, але хочемо, щоб метод повернув щось, ми використовуємо параметри з ключовим словом out. Розберемося з прикладом.

 використання системи; class DemoOut {public int Decompose (подвійна x, out подвійна фракція) {int whole_num; whole_num = (int) x; дробу = x - цілий-нуль; return whole_num; }} клас Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; подвійний ГРП; i = ob.Decompose (100.125, out frac); // використали ключове слово Console.WriteLine ("частина цілого числа" + i); Console.WriteLine ("фракційна частина" + frac); }} // Вихідна ціла частина дорівнює 100 Дробова частина становить 0, 125 

У наведеному вище коді два значення повертаються методом, Decompose (). Вона повертається ключовим словом “return”, тобто whole_num, а інший повертає параметр, якому передує вихідне ключове слово while метод виклику тобто “frac”.

Важливі моменти, які слід пам'ятати про ключове слово out.

  • На відміну від ключового слова ref, параметр, який використовує ключове слово out, не повинен бути ініціалізований перед викликом методу.
  • Запропонований метод сам привласнить значення параметру з ключовим словом out, оскільки він вважається непризначеним всередині викликаного методу, тобто передбачається, що він не має початкового значення.
  • Викликаний метод повинен присвоїти значення параметру out перед тим, як метод завершиться.
  • Ключове слово out також застосовується до еталонної змінної.

Ключові відмінності між Ref та Out в C #

  1. Коли змінна, яка передує ключовому слову ref, передається до будь-якого методу, то зміни, внесені до нього в межах методу, відображаються у його початковому значенні. Коли змінної, переданої методу, передує ключове слово out, метод повертає його без використання ключового слова return.
  2. Параметр ref повинен бути ініціалізований перед передачею методу. З іншого боку, параметр out повинен бути ініціалізований всередині методу, до якого він передається.
  3. Під час виклику, оголошення або визначення методу параметр ref явно оголошується як ref. З іншого боку, при виклику, оголошенні або визначенні методу, параметр out явно оголошується як out.

Висновок:

Всякий раз, коли змінну потрібно передавати посиланням на метод, можна використовувати ключове слово ref та out. Враховуючи, що причина використання обох ключових слів відрізняється, коли ключове слово ref може використовуватися для зміни значення аргументу, що передує ключовому слову ref, переданому викликаному методу, а ключове слово out використовується для повернення значення попереднього аргументу за ключовим словом out.

Top