Різниця між посиланням та відхилом у C #

Автор: Laura McKinney
Дата Створення: 2 Квітень 2021
Дата Оновлення: 5 Травень 2024
Anonim
Різниця між посиланням та відхилом у C # - Технологія
Різниця між посиланням та відхилом у C # - Технологія

Зміст


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

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

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


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

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

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

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


Є кілька важливих моментів, які слід пам’ятати при роботі з модифікатором параметра «ref».

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

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

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

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

У наведеному вище коді два значення повертаються методом Decompose (). Одне повертається за ключовим словом "return", тобто, full_num, а інше повертає параметр, якому передує ключове слово out під час виклику методу, тобто "frac".

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

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

Висновок:

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