Обмен данными между методами

      Комментарии к записи Обмен данными между методами отключены

При рассмотрении данного вопроса взаимодействие между методами упрощено – рассматриваем вариант, когда все методы расположены в одном классе.

Существует 3 способа обмена данными:

1. Использование общих полей класса (рассмотренный ранее вариант)

2. Обмен данными через параметры методов

3. Возврат данных из метода

Обмен данными через параметры методов

При вызове метода в скобках помещаются фактические параметры (аргументы метода), которые передаются в метод и там обрабатываются. При определении метода (в его заголовке) указываются формальные параметры, для каждого параметра указывается тип и имя. Значения аргументов будут подставлены вместо параметров (попарно, слева направо). Аргументом может быть любое выражение, тип которого совпадает с типом параметра или может быть автоматически преобразован к типу параметра. При вызове метода вместо формальных параметров его заголовка подставляются фактические. Это похоже на подстановку конкретных чисел в формулу. Сейчас мы рассмотрим ВСЕ виды параметров. На данном этапе не ставится задача изучить перечисляемые способы передачи данных в полном объеме. Это справочная информация.

Виды параметров:

1. Входные (прием данных) – при вызове снимается копия аргумента и передается в метод на место параметра. Метод не имеет возможности изменить аргумент. По умолчанию все параметры считаются входными.

2. Выходные – при вызове в метод передается ссылка на область памяти, где хранится аргумент. Метод обрабатывает данные по этой ссылке, т.е. работает с оригиналом аргумента. Выходные параметры при определении метода и вызове метода должны иметь модификатор out.

3. Входные — выходные – по механизму реализации аналогичны выходным параметрам, но вызывающий метод в обязательном порядке должен определить значение метода. Выходные параметры при определении метода и вызове метода должны иметь модификатор ref.

На практике школьнику достаточно освоить передачу переменных и констант по значению и массивов по ссылке.

Почему передача массивов производится о ссылке? Ссылка – это адрес ячейки памяти, куда помещается первый элемент массива с индексом 0. Массивы, как вы уже знаете, располагаются в памяти в непрерывной области (в подряд идущих ячейках). Поэтому нам достаточно знать адрес начала массива, а потом индексировать его, смещаясь на длину одного элемента внутри выделенной памяти. Нет нужды передавать в метод все элементы массива. Иногда мы называем имя массива ссылкой на его начало в памяти ЭВМ.

Переменные и константы передаются как правило по значению. В стеке копируется их значение и используется методом. А первоначальное значение остается неизменным. Можно их передавать и о ссылке (т.е. не само значение, а адрес ячейки памяти). Для передачи адреса и служат ref и out. Не всегда стоит допускать метод «хозяйничать» в ячейках, поэтому основным способом передачи данных в метод остается передача по значению.

Пример:

Определить метод, выполняющий сдвиг координат точки на заданное расстояние.

class_Example

{

Public_static_void_Mov (ref int x, ref int y, int d)

{

x=x+d;

y=y+d;

}

public_static_void_Main()

{

int a=4, b=3, d=10;

Move (ref a, ref b, d);

}

}

В примере метод не возвращает значение, в него по ссылке передаются две переменные и одна по значению. Переменные меняют значение в результате вычислений внутри метода. Так как они переданы по ссылке, то замена старого значения переменных на новое производится в ячейке памяти. Исходные данные теряются. А теперь попробуйте добавить оператор вывода на экран переменных после вызова метода. Вы получите значения 14 и 13 соответственно вместо 4 и 3.

Теперь рассмотрим ту же программу, но с передачей данных по значению.

class_Example

{

Статьи к прочтению:

Сложность обмена данными между двумя базами на примере Rozetka.UA


Похожие статьи:

  • Функции win32 api для обмена данными по rs-232с

    Функции получения информации при обмене данными всегда применяются в приложениях, где необходимо осуществить настройку параметров до начала приема или…

  • Обмен данными между matlab и excel

    Запустите Excel, проверьте, что проделаны все необходимые настройки так, как описано в предыдущем разделе (MatLab должен быть закрыт). Введите в ячейки с…