Conversioni di puntatori (Guida per programmatori C#)

Nella tabella che segue sono illustrate le conversioni di puntatori implicite già definite. Le conversioni implicite possono avere luogo in numerose situazioni, incluse le chiamate a metodi e le istruzioni di assegnazione.

Conversioni di puntatori implicite

Da

Per

Qualsiasi tipo di puntatore

void*

null

Qualsiasi tipo di puntatore

La conversione di puntatori esplicita consente di eseguire conversioni in puntatori per i quali non esiste alcuna conversione implicita, utilizzando un'espressione cast. Tali conversioni sono illustrate nella tabella che segue.

Conversioni di puntatori esplicite

Da

Per

Qualsiasi tipo di puntatore

Qualsiasi altro tipo di puntatore

sbyte, byte, short, ushort, int, uint, long oppure ulong

Qualsiasi tipo di puntatore

Qualsiasi tipo di puntatore

sbyte, byte, short, ushort, int, uint, long oppure ulong

Esempio

Nell'esempio riportato di seguito un puntatore a int viene convertito in un puntatore a byte. Si noti che il puntatore punta al byte della variabile con l'indirizzo più basso. Quando si incrementa successivamente il risultato, fino a raggiungere la dimensione di int (4 byte), è possibile visualizzare i byte rimanenti della variabile.

// compile with: /unsafe
class ClassConvert
{
    static void Main() 
    {
        int number = 1024;

        unsafe 
        {
            // Convert to byte:
            byte* p = (byte*)&number;

            System.Console.Write("The 4 bytes of the integer:");

            // Display the 4 bytes of the int variable:
            for (int i = 0 ; i < sizeof(int) ; ++i)
            {
                System.Console.Write(" {0:X2}", *p);
                // Increment the pointer:
                p++;
            }
            System.Console.WriteLine();
            System.Console.WriteLine("The value of the integer: {0}", number);

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
}
    /* Output:
        The 4 bytes of the integer: 00 04 00 00
        The value of the integer: 1024
    */

Vedere anche

Riferimenti

Espressioni puntatore (Guida per programmatori C#)

Tipi di puntatori (Guida per programmatori C#)

unsafe (Riferimenti per C#)

Istruzione fixed (Riferimenti per C#)

stackalloc (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Tipi (Riferimenti per C#)