2011-04-14 22 views
7

He estado leyendo en IntPtr y he leído que se usa para representar una (s) manija (s). Que significa exactamente? Estoy seguro de que es una explicación simple, pero la bombilla simplemente no se enciende en este momento ...¿Qué son las asas? IntPtr

+0

Pregunta duplicada: http://stackoverflow.com/questions/1148177/just-what-is-an-intptr-exactly – HABJAN

+0

@Habjan: No del todo. El OP pregunta por los identificadores, mientras que la pregunta es acerca de 'IntPtr'. – Mehrdad

+0

posible duplicado de [struct a la que apunta un HANDLE.] (Http://stackoverflow.com/questions/5343660/struct-which-a-handle-points-to) – Gabe

Respuesta

6

Esto normalmente se refiere a un sistema operativo Handle, y se usa internamente. Por ejemplo, Windows Forms usa un IntPtr para referirse al identificador de ventana nativo del control (HWND).

Los identificadores en la API de Windows se utilizan para muchas cosas: la mayoría de los recursos relacionados con el sistema operativo (archivos, sockets, ventanas, etc.) están expuestos a través de un identificador, que efectivamente es un puntero. En el código administrado, esto se almacena en un IntPtr.

Dicho esto, IntPtr también se usa regularmente para almacenar punteros en escenarios de interoperabilidad, ya que cambia el tamaño automáticamente según el código de 32 bits o de 64 bits.

+0

+! para el uso de HWND que se usa con mayor frecuencia en los métodos API de Windows. Esta honestamente es una muy buena respuesta. –

6

Un "mango" es un "puntero opaco". Es un valor (generalmente solo un número que es un índice en una matriz) que el sistema operativo le da a una aplicación para representar un objeto interno, en lugar de darle un puntero al objeto real. Esto se debe a razones de seguridad y abstracción: obliga a la aplicación a utilizar el identificador solo a través de las API proporcionadas.