русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Параметри методів


Дата додавання: 2015-01-08; переглядів: 1189.


Розглянемо детальніше, яким чином метод обмінюється інформацією з кодом, що викликав його. При виклику методу виконуються наступні дії:

1. Обчислюються вирази, що стоять на місці аргументів.

2. Виділяється пам'ять під параметри методу відповідно до їх типу.

3. Кожному з параметрів зіставляється відповідний аргумент (аргументи ніби накладаються на параметри і заміщають їх).

4. Виконується тіло методу.

5. Якщо метод повертає значення, воно передається в точку виклику; якщо метод має тип void, управління передається на оператора, наступного після виклику.

При цьому перевіряється відповідність типів аргументів і параметрів і при необхідності виконується їх перетворення. При невідповідності типів видається діагностичне повідомлення. Лістинг 5.3 ілюструє цей процес.

 

Лістинг 5.3. Передача параметрів методу

 

using System;

namespace ConsoleApplicationl

{

class Class1

{

static int Max(int a, int b)

{

if (a>b) return a;

return b;

}

 

static void Main( )

{

int a = 2, b = 4;

int x = Max( a, b ); // виклик методу Max

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

short tl =3, t2 = 4;

int у = Max( tl , 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, params int[] d ) ...

 

Параметри-масиви будуть розглянуті в розділі 7, а зараз розглянемо решту типів параметрів.

 


<== попередня лекція | наступна лекція ==>
Тіло методу | Тип ім’я


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн