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

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 5 Може 2024
Anonim
Difference between ref and out in C Sharp
Видео: Difference between ref and out in C Sharp

Съдържание


„Ref“ и „Out“ са модификаторите на параметри, използвани в C #. Използвайки ref и out, можете да предавате всеки тип стойност чрез препратката към всеки метод. Причината за преминаване на всеки тип стойност чрез неговото въвеждане представя основната разлика между ключовата дума ref и out. Най- код ключовата дума позволява на наречения метод да променя съдържанието на предадения му аргумент с ключова дума ref. Най- от ключовата дума позволява наречения метод да върне повече от една стойност при едно повикване. Нека да проучим разликата между реф и извън заедно с сравнителна диаграма.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеRefот
ОсновенТой позволява промяната в стойността на аргумента, пристъпен с ключова дума ref.Той позволява метод да върне тези стойности, предшествани от външна ключова дума.
ИнициализацияПараметърът ref трябва да се инициализира преди повикването на метода.Параметърът out трябва да се инициализира вътре в наречения метод, преди да се прекрати.
декларацияПараметърът, който трябва да бъде променен от метод, се декларира като ref, докато декларация на метод и извикване на метод.Параметърът, който трябва да бъде върнат, трябва да бъде деклариран като ref, докато декларация на метод и извикване на метод.


Дефиниция на ключова дума Ref

„Ref“ е модификатор на параметър, използван, когато има нужда от извикване на метод с референтен разговор. Когато искаме промените, направени в аргументите вътре в наречения метод, трябва да се отразяват в първоначалната стойност на тази променлива, тогава се използва модификаторът на ref параметъра. Типът стойност, който искаме да декларираме като реф, се предхожда от ключовата дума „ref“ по време на деклариране на метод и извикване на метод. Повече от един параметър може да бъде деклариран като „ref“, докато извиквате и декларирате метод.

използване на System; клас DemoRef {public void Square (ref int s) {s = s * s; }} клас Ref_main {static void Main () {DemoRef ob = нов DemoRef (); int a = 10; Console.WriteLine ("метод преди извикване:" + a); ob.Square (ref a); // Използва ref ref Console.WriteLine ("a after call:" + a); }} // извежда a call метод преди: 10 a след извикване на метод: 100

В горния код променливата 'a' се предава като аргумент на метода Square (ref a) заедно с прикрепения към нея модификатор на параметър ref. Това означава, че каквито и да са промени методът Square (ref a) ще извърши върху променливата 'a' вътре в нея ще се отрази в първоначалната стойност на 'a', извън метода също.


Има някои важни точки, които трябва да запомните, когато се занимавате с модификатор на параметрите „ref“.

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

Определение на външна дума

Всеки път, когато се обадите на метод, той ще върне само една стойност. Ако искате метод да върне повече от една стойност при повикване, ключовата дума „out“ трябва да се използва заедно с параметрите, които искате да върнете обратно, когато методът бъде прекратен. Понякога е така, че когато не искаме да предадем нищо на метода, а искаме методът да върне обратно нещо, използваме параметри с външна ключова дума.Нека го разберем с пример.

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

В горния код се връщат две стойности чрез метода Decompose (). Едното се връща чрез ключовата дума „return“, т.е. целият_num, а другото връща параметър, който се предхожда от ключовата дума out, докато методът извиква, т.е. „frac“.

Важните точки, които трябва да запомните за ключовата дума.

  • За разлика от ref ключовата дума, параметърът, използващ ключова дума, не трябва да се инициализира преди извикване на метод.
  • Извиканият метод сам ще присвои стойност на параметъра с външна ключова дума, тъй като се счита за неподписан вътре в наречения метод, т.е. се приема, че няма начална стойност.
  • Извиканият метод трябва да присвои стойност на параметъра out, преди методът да се прекрати.
  • Външната ключова дума е приложима и за референтната променлива.
  1. Когато променлива, предшествана от ключовата дума ref, се предава на всеки метод, промените, направени в нея вътре в метода, се отразяват в първоначалната му стойност. Когато променлива, предадена на метод, се предхожда от ключова дума out, методът я връща, без да използва ключова дума return.
  2. Параметърът ref трябва да се инициализира преди да бъде предаден на метод. От друга страна, параметърът out трябва да се инициализира вътре в метода, на който е предаден.
  3. Докато се обаждате, декларирате или дефинирате метод, параметърът ref изрично се декларира като ref. От друга страна, докато извиквате, декларирате или дефинирате метод, параметърът out изрично се декларира като изключен.

Заключение:

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