2009-12-21 11 views
6

Devo passare un codice ULONG_PTR in codice non sicuro in C#.C# ULONG_PTR Equivalente

Capisco che il motivo per ULONG_PTR è quello di consentire un singolo codebase per entrambi i sistemi operativi a 32 bit e 64 bit.

Si tratta di un caso per C# UIntPtr? Posso essere sicuro quando passo un .Net UIntPtr come parametro ULONG_PTR?

Grazie!

risposta

6

Da MSDN:

Il tipo IntPtr è compatibile con CLS, mentre il tipo UIntPtr non è. Solo il tipo IntPtr viene utilizzato nel common language runtime . Il tipo UIntPtr è fornito principalmente per mantenere simmetria architettonica con il tipo IntPtr

Entrambi i tipi sono in grado di memorizzare 32 bit e 64 bit puntatori. Il tipo preferito è IntPtr.

2

Sulla base della descrizione MSDN di esso direi che dovrebbe essere:

Il tipo UIntPtr è progettato per essere un numero intero la cui dimensione è specifico della piattaforma. Cioè, un'istanza di questo tipo dovrebbe essere a 32 bit su hardware e sistemi operativi a 32 bit e 64 bit su hardware e sistemi operativi a 64 bit.