Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Листинг 1.3

usingSystem;

namespaceConsoleApplication1

{

classClass1

{

staticintMax(inta, intb) // метод выбора максимального значения

{if (а> b) return а; else return b;}

static void Main()

{inta = 2, b = 4;

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

Console.WriteLine(x); //результат: 4

shorttl = 3, t2 = 4;

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

Console.WriteLine(у); // результат: 4

int z = Max(a+tl, tl/2*b): // вызовметода Max

Console.WriteLine(z); // результат 5

}

}

}

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

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

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

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

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

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

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

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

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

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

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

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

public int Calculate(int a, ref int b, out int c, paramsint[] d)...

 

 

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

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

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

void P(int х)

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

Механизм передачи следующий: из ячейки памяти, в которой хранится перемен­ная, передаваемая в метод, берется ее значение и копируется в специальную об­ласть памяти — область параметров. Метод работает с этой копией, следователь­но, доступа к ячейке, где хранится сама переменная, не имеет. По завершении работы метода область параметров освобождается. Этот способ годится только для величин, которые не должны измениться после выполнения метода.

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

 

3.1.1.2 Параметры-ссылки

 

Во многих методах все величины, которые метод должен получить в качестве ис­ходных данных, описываются в списке параметров, а величина, которую вычис­ляет метод как результат своей работы, возвращается в вызывающий код с помо­щью оператора return. Очевидно, что если метод должен возвращать более одной величины, такой способ не годится. Еще одна проблема возникает, если в методетребуется изменить значение каких-либо передаваемых в него величин. В этих случаях используются параметры-ссылки.

Признаком параметра-ссылки является ключевое слово ref передописанием па­раметра:

<== предыдущая лекция | следующая лекция ==>
Ключевое слово this | Ref тип имя
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 331; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.