Параметры методов. При вызове метода выполняются следующие действия

При вызове метода выполняются следующие действия:

1. Вычисляются выражения, стоящие на месте аргументов.

2. Выделяется память под параметры метода в соответствии с их типом.

3. Каждому из параметров сопоставляется соответствующий аргумент.

4. Выполняется тело метода.

5. Если метод возвращает значение, оно передается в точку вызова; если метод имеет тип void, управление передается на оператор, следующий после вызова.

При этом проверяется соответствие типов аргументов и параметров и при необходимости выполняется их преобразование. При несоответствии типов выдается диагностическое сообщение.

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

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

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

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

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

- параметры-ссылки — описываются с помощью ключевого слова ref;

- выходные параметры — описываются с помощью ключевого слова оut;

- параметры-массивы — описываются с помощью ключевого слова рarams.

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

Листинг 2- Передача параметров методу

using System;

namespace ConsoleApplication1

{ class Class1

{

static int Max(int a, out int b) / / метод выбора максимального значения

{

if (а > b) return а;

еlse return b;

}

static void Main()

{

int a = 2, b = 4;

int x = Мах(а, b); / / вызов метода Мах

Соnsole.WriteLine(х); / / результат: 4

short t1 = 3, t2 = 4;

int у = Мах(t1, t2); / / вызов метода Мах

Соnsole.WriteLinе(у); / / результат: 4

int z = Мах(а + t1, t1 / 2 * b); / / вызов метода Мах

Соnsole.WriteLine(z); / / результат: 5

}

}

}

В классе описан метод Мах, который выбирает наибольшее из двух переданных ему значений. Параметры описаны как а и b. В методе Main выполняются три вызова Мах. В результате первого вызова методу Мах передаются два аргумента того же типа, что и параметры, во втором вызове — аргументы совместимого типа, в третьем — выражения.

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

Количество аргументов должно соответствовать количеству параметров. На имена никаких ограничений не накладывается: имена аргументов могут как совпадать, так и не совпадать с именами параметров.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: