Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачёт С#.docx
Скачиваний:
17
Добавлен:
10.12.2018
Размер:
100.55 Кб
Скачать

19. Модификаторы ref, out, params параметров методов.

Модификатор ref параметров методов

ref (от слова reference – ссылка). Модификатор параметра метода ref позволяет передавать не копию значения, а его адрес.

Модификатор параметра метода ref можно также использовать для получения нескольких значений из метода. Вспомним методы класса Point Get_x() и Get_y(). Чтобы прочесть (получить) значения членов-переменных, использовать два метода не очень удобно. Хорошо бы получить и x, и y при вызове одного метода. Однако метод (это – функция), содержащий оператор return, возвращает одно значение. Для решения этой проблемы и используется модификаторы параметров ref. И тогда передача результатов работы метода ref-параметрам произойдет по ссылке.

Примечания:

  1. Модификатор ref должен быть указан и перед параметром в методе, и перед аргументом в вызове метода.

  2. Аргументу, передаваемому методу со словом ref, должно быть присвоено значение до вызова метода, ведь параметр должен ссылаться на действительное значение.

  3. ref обычно применяют для того, чтобы метод внес изменения в существующие значения (например, обмен значениями, сортировка массива, или преобразование массива).

Модификатор out параметров методов. Он чаще всего используется не для передачи значения методу, а для его получения из метода. Модификатор out работает точно так же, как и модификатор ref с единственным исключением: в метод out-аргументы можно передавать и не инициализированными. Тогда переменной (аргументу со словом out) присваивать начальное значение до вызова метода не нужно.

Примечание: Метод до своего завершения обязательно должен присвоить out-параметру полученное значение.

Модификаторы ref и out можно применять и к ссылочным параметрам, т.е. параметрам-объектам. В этом случае реализуется передача ссылки по ссылке. Это позволяет методу изменять объект, на который указывает ссылка-параметр.

Использование переменного количества аргументов и модификатор params. Иногда нужен метод, который принимал бы произвольное число аргументов. Например, метод, который находит максимальное значение в наборе чисел. Методу может быть передано 2, 3, 4 и т.д. значения. Такому методу нужен специальный параметр, который заменяет собой произвольное количество параметров. Это реализуется с помощью модификатора params. Модификатор params используется для объявления параметра-массива, который сможет получить некоторое количество аргументов (в том числе и нулевое). Количество элементов в массиве будет равно числу аргументов, переданных методу.

Примечания: В любом методе может быть только один модификатор params. Параметр с модификатором params может быть только последним параметром в списке параметров метода.

20.Возвращение методами объектов класса. Возвращение методами массивов Возвращение методами объектов класса

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

Пример: В классе Point разработаем метод Uwelichennaja_tochka(…).

public Point Uwelichennaja_tochka(int koef)

{

return new Point(x* koef, y* koef);

}

В Main() вызовем этот метод:

T4.Show();

Point T5=new Point();

T5=T4. Uwelichennaja_tochka(100);

T5.Show(); // Выполнить приложение!