sizeof (référence C#)
Utilisé pour obtenir la taille en octets d'un type non managé. Les types non managés incluent les types intégrés répertoriés dans le tableau suivant, et également les éléments suivants :
Types d'enum
Types de pointeur
Les structs définis par l'utilisateur qui ne contiennent pas tous les champs ou propriétés qui sont des types référence
L'exemple suivant indique comment extraire la taille d'un int :
// Constant value 4:
int intSize = sizeof(int);
Notes
Depuis la version 2.0 de C#, appliquer sizeof à des types intégrés n'oblige plus à utiliser le mode unsafe.
L'opérateur sizeof ne peut pas être surchargé. Les valeurs retournées par l'opérateur sizeof sont de type int. Le tableau suivant montre les valeurs de constantes substituées aux expressions sizeof qui ont certains types intégrés en tant qu'opérandes.
Expression |
Valeur de constante |
---|---|
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 |
Pour tous les autres types, y compris les structs, l'opérateur sizeof ne peut être utilisé que dans des blocs de code unsafe. Bien que vous puissiez utiliser la méthode Marshal.SizeOf, la valeur retournée par cette méthode n'est pas toujours la même que celle retournée par sizeof. Marshal.SizeOf retourne la taille après avoir marshalé le type, alors que sizeof retourne la taille comme elle a été allouée par le common language runtime, y compris tout remplissage.
Exemple
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.
*/
Spécification du langage C#
Pour plus d'informations, consultez la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.
Voir aussi
Référence
Mots clés des opérateurs (référence C#)
Pointeurs et code unsafe (Guide de programmation C#)
Structures (Guide de programmation C#)
Constantes (Guide de programmation C#)