Для чего нужны ручки? IntPtr - PullRequest
7 голосов
/ 14 апреля 2011

Я читал об IntPtr и прочитал, что он используется для представления дескрипторов. Что это значит точно? Я уверен, что это простое объяснение, но лампочка просто не включается в данный момент ..

Ответы [ 2 ]

6 голосов
/ 14 апреля 2011

Обычно это относится к дескриптору операционной системы и используется для внутренних целей.Например, Windows Forms использует IntPtr для ссылки на собственный дескриптор окна элемента управления (HWND).

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

При этом IntPtr также регулярно используется для хранения указателей в сценариях взаимодействия, а также автоматически изменяет размеры на основе 32-битного или 64-битного кода.

6 голосов
/ 14 апреля 2011

«Ручка» - это «непрозрачный указатель». Это значение (обычно просто число, являющееся индексом массива), которое операционная система дает приложению для представления внутреннего объекта, вместо того, чтобы давать ему указатель на фактический объект. Это связано как с соображениями безопасности, так и с точки зрения абстракции - оно заставляет приложение использовать дескриптор только через предоставленные API.

...