Поделиться через


Передача параметров

Обновлен: Ноябрь 2007

Параметры методов могут быть переданы по значению, по ссылке или как выходные параметры. Когда параметр передается по значению, метод получает копию данных вызывающего объекта и не может изменить эту копию. При передаче параметра по ссылке метод получает указатель на данные вызывающего объекта. Эти данные используются совместно с вызывающим объектом. Если метод производит изменение значения параметра, передаваемого по ссылке, изменяются данные вызывающего объекта. При использовании параметра, передаваемого по ссылке, метод может использовать начальное значение данных. Выходные параметры похожи на параметры, передаваемые по ссылке, за исключением того что выходные параметры используются только для возврата данных вызывающему объекту, в то время как параметры, передаваемые по ссылке, могут использоваться как для передачи данных методу, так и для получения данных из метода.

Избегайте использования выходных параметров или параметров, передаваемых по ссылке.

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

Не передавайте ссылочные типы по ссылке.

Передача объекта по ссылке позволяет методу заменить объект другим экземпляром. В большинстве сценариев метод должен использовать поставляемый объект, а не заменять его. Это правило имеет несколько исключений (например, метод, который может быть использован для обмена ссылками).

Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Дополнительные сведения о рекомендациях по разработке см. в книге "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries", Krzysztof Cwalina and Brad Abrams, Addison-Wesley, 2005.

См. также

Основные понятия

Разработка параметров

Другие ресурсы

Правила разработки членов

Руководство по разработке библиотек классов