.NET глазами дельфийца. C# - Указатели

ОГЛАВЛЕНИЕ

 

Указатели

В Delphi указатели чаще всего используются для управлениятакими конструкциями, как записи. В частности, при передаче записи в качествепараметра в подпрограмму (процедуру, функцию или метод) происходит побайтноекопирование в стек вызова, что может приводить к серьезным накладным расходам.Альтернативное решение - передать в качестве параметра указатель на запись иуже через него внутри подпрограммы получить доступ к элементам записи.

В C# приведенный пример использования указателей на записи более изящно ибезопасно реализуется с использованием такой конструкции, как struct. Структуры, как и записиDelphi, могутиспользоваться для хранения данных и, что более важно с точки зрения семантики,являются объектами, передаваемыми не по ссылке, а по значению.

На самом деле, в C# имеется всего лишь одна возможностьиспользовать указатели - т.н. код (unsafe code). Особенности его использованияопределены в стандарте C# достаточно подробно (спецификация C#, приложение A). Однако, необходимо отметить, что впрактическом программировании редко приходится использовать указатели для иныхцелей, кроме оптимизации производительности. Поэтому, учитывая классическоеправило (, или , или ), можно акцентироваться на оптимизации кода (в терминах C# - использованиенебезопасного кода) только при необходимости и только тогда, когда выявлены тесамые 20% кода, которые используют 80% ресурсов.