Параметры-значения

При передаче по ссылке ( по адресу ) метод получает копии адресов аргументов, он осуществляет доступ к ячейкам памяти по этим адресам и может изменять исходные значения аргументов, модифицируя параметры.

При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. Доступа к исходным значениям аргументов у метода нет, а, следовательно, нет и возможности их изменить.

Существуют два способа передачи параметров: по значению и по ссылке.

Способы передачи параметров

В C# для обмена данными между вызывающей и вызываемой функциями предусмотрено четыре типа параметров:

  • параметры-значения;
  • параметры-ссылки — описываются с помощью ключевого слова ref ;
  • выходные параметры — описываются с помощью ключевого слова out ;
  • параметры-массивы — описываются с помощью ключевого слова params.

Ключевое слово предшествует описанию типа параметра. Если оно опущено, параметр считается параметром-значением. Параметр-массив может быть только один и должен располагаться последним в списке, например:

public int Calculate( int a, ref int b, out int c, params int[] d ) …

Параметр-значение описывается в заголовке метода следующим образом:

тип имя

Пример заголовка метода, имеющего один параметр-значение целого типа:

void P( int x )