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 per operatori (Riferimenti per C#)
Codice unsafe e puntatori (Guida per programmatori C#)
Struct (Guida per programmatori C#)
Costanti (Guida per programmatori C#)