Передача параметров по ссылке и по значению (ref и out)
Конструктор сайтов - uCoz
Меню сайта


Поиск по сайту
Loading


Форма входа


Помощь проекту

PayPal:

LiqPay or Credit/Debit Card:

W1 "Единый кошелек":
199990419310
WebMoney:
WME - E509190786817
WMZ - Z195499640086
WMU - U204403357554
WMR - R280087882619




Активные темы

  • Все вопросы касающиеся Neil Scope (6423)
  • Продам плату Neil Scope 3 rev 3.2 (1)
  • Заказ плат под NeilScope3 (12.2015) (59)
  • Первое знакомство с микроконтроллерами Silabs (105)
  • инвертор на микропроцессоре с 12\220v с синусом на выходе (2)
  • Куплю плату NS-3 (0)
  • Подскажите (0)
  • Осваиваем LPC2478... (1)
  • Мелкие вопросы по МК51 от SiLabs-a.. (40)
  • Детали для Neil Scope 2 (0)



  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0



    Рекомендуемые браузеры: Mozzilla, Google Chrome






    Приветствую Вас, Пробегающий мимо · RSS 22.09.2017, 04:38

    Основы C#. Урок 28. Передача параметров по ссылке и по значению (ref и out)

    Если мы передаем в некоторую функцию параметр, то функция по умолчанию работает с копией параметра, а не с оригиналом. Это называется перередача по значению. При этом при изменении передаваемого параметра внутри функции значение соответствующей переменной вне функции не изменится. Иногда же нам надо, что бы функция действительно изменяла передаваемые в нее параметры. Для этого мы должны передавать их по ссылке. Для этого мы используем ключевое слово ref. Вот пример:

     class Test
     {
     static void SomeFunction1(int a)
     {
     a=12; //Изменяем копию параметра функции
     }
     static void SomeFunction2(ref int a)
     {
     a=55; //Изменяем оригинал параметра функции
     }
     public static void Main()
     {
     int z=23;
     SomeFunction1(z);
     Console.WriteLine(z); //Напечатается 23
     SomeFunction2(ref z);
     Console.WriteLine(z); //Напечатается 55
     }
     }

    Обратите внимание, что при вызове функции SomeFunction2 мы опять используем ключевое слово ref (как и при объявлении этой функции):

     ...
     SomeFunction2(ref z);
     ...

    Параметр out аналогичен параметру ref, только при его использовании в функцию можно передавать неинициализированные переменные (т. е. переменные с незаданными начальными значениями). Вот пример:

     class Test
     {
     static void SomeFunction2(ref int a)
     {
     a=55;
     }
     static void SomeFunction3(out int a)
     {
     a=66;
     }
     public static void Main()
     {
     int z=0; //Переменную z надо обязательно инициализировать
     SomeFunction2(ref z);
     Console.WriteLine(z); //Напечатается 55
     int y; //Переменную y можно не инициализировать
     SomeFunction3(out y);
     Console.WriteLine(y); //Напечатается 66
     }
     }

    При вызове такой функции обязательно использование ключевого слова out.