ВУЗ:
Составители:
Рубрика:
72
Если для параметра не указаны ключевые слова ref или out, то к
нему будет применяться вызов по значению. Даже если в теле метода
происходит изменение значения этого параметра, то оно действует
только на время выполнения тела метода. Как только метод заканчивает
свою работу (завершается блок), все локальные переменные (в том чис-
ле, созданные для замены формальных параметров) оканчивают свое
существование, так что изменения не затронут фактических параметров,
и они сохранят свои значения, бывшие у них до вызова. Все выходные
параметры, значения которых предполагается изменить в процессе ра-
боты метода, должны иметь ключевое слово ref или out.
В языке C# основную роль играют ссылочные типы, в основном
выполняется работа с классами и объектами. Когда методу передается
объект ссылочного типа, то все поля этого объекта могут меняться в ме-
тоде любым образом. А это означает, что, несмотря на то, что параметр
формально не является выходным (т.е., не имеет ключевых слов ref
или out), но он используется, как и при вызове по значению. Сама
ссылка на объект остается неизменной, но состояние объекта, его поля
могут полностью обновиться. Такая ситуация является типичной и
представляет один из основных способов изменения состояния объек-
тов. Именно поэтому ref или out не очень часто появляются при опи-
сании параметров метода.
4.3. Перегрузка методов
В C# не требуется уникальности имен методов в классе. Сущест-
вование в классе методов с одним и тем же именем называется пере-
грузкой, а сами методы называются перегруженными. Перегрузка ме-
тодов полезна, когда требуется решать одинаковые задачи с разным на-
бором параметров. Типичный пример – это конструкторы класса, но пе-
регружать можно и любой другой метод.
При вызове не перегруженного метода, его имя однозначно опре-
деляет, какой метод должен выполняться в точке вызова. Когда же ме-
тод перегружен, то знания имени недостаточно. Уникальной характери-
стикой перегруженных методов является их сигнатура. Перегруженные
методы, имея одинаковое имя, должны отличаться либо числом пара-
метров, либо их типами, либо ключевыми словами (заметьте: с точки
зрения сигнатуры, ключевые слова ref или out не отличаются). Уни-
кальность сигнатуры позволяет вызвать требуемый перегруженный ме-
тод. Ниже приведен пример, в котором выполнена перегрузка метода A,
для которого заданы четыре метода с именем A, различающиеся по сиг-
натуре, и метод для их тестирования TestLoadMethods:
Страницы
- « первая
- ‹ предыдущая
- …
- 70
- 71
- 72
- 73
- 74
- …
- следующая ›
- последняя »