sizeof (Riferimenti per C#)

Utilizzato per ottenere la dimensione in byte di un tipo non gestito.I tipi non gestiti includono i tipi incorporati elencati nella tabella seguente, nonché gli elementi seguenti:

  • Tipi enum

  • Tipi puntatore

  • Struct definiti dall'utente che non contengono campi o proprietà che corrispondono a tipi di riferimento

Nell'esempio seguente viene illustrato come recuperare la dimensione di un tipo int:

// Constant value 4:
int intSize = sizeof(int); 

Note

A partire dalla versione 2.0 di C#, l'applicazione di sizeof ai tipi incorporati non richiede più l'utilizzo della modalità unsafe.

Non è possibile sottoporre l'operatore sizeof a overload.I valori restituiti dall'operatore sizeof sono di tipo int.Nella tabella seguente vengono illustrati i valori costanti che sostituiscono le espressioni sizeof con determinati tipi incorporati come operandi.

Espressione

Valore costante

sizeof(sbyte)

1

sizeof(byte)

1

sizeof(short)

2

sizeof(ushort)

2

sizeof(int)

4

sizeof(uint)

4

sizeof(long)

8

sizeof(ulong)

8

sizeof(char)

2 (Unicode)

sizeof(float)

4

sizeof(double)

8

sizeof(decimal)

16

sizeof(bool)

1

Per tutti gli altri tipi, inclusi gli struct, l'operatore sizeof può essere utilizzato soltanto in blocchi di codice unsafe.Sebbene sia possibile utilizzare il metodo Marshal.SizeOf, il valore restituito da questo metodo non corrisponde sempre al valore restituito da sizeof.Marshal.SizeOf restituisce la dimensione dopo il marshalling del tipo, mentre sizeof restituisce la dimensione allocata da Common Language Runtime, incluso l'eventuale riempimento.

Esempio

    class MainClass
    {
        // unsafe not required for primitive types
        static void Main()
        {
            Console.WriteLine("The size of short is {0}.", sizeof(short));
            Console.WriteLine("The size of int is {0}.", sizeof(int));
            Console.WriteLine("The size of long is {0}.", sizeof(long));
        }
    }
    /*
    Output:
        The size of short is 2.
        The size of int is 4.
        The size of long is 8.
    */

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Parole chiave per operatori (Riferimenti per C#)

enum (Riferimenti per C#)

Codice unsafe e puntatori (Guida per programmatori C#)

Struct (Guida per programmatori C#)

Costanti (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#