L’opérateur sizeof détermine les besoins en mémoire d’un type donné
L’opérateur sizeof
retourne le nombre d’octets occupés par une variable d’un type donné. L’argument de l’opérateur sizeof
doit être le nom d’un type non managé ou d’un paramètre de type qui est contraint comme type non managé.
L’opérateur sizeof
nécessite un contexte unsafe. Toutefois, les expressions présentées dans le tableau suivant sont évaluées au moment de la compilation par rapport aux valeurs de constante correspondantes et ne nécessitent pas de contexte unsafe :
Expression | Valeur 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 |
sizeof(float) |
4 |
sizeof(double) |
8 |
sizeof(decimal) |
16 |
sizeof(bool) |
1 |
Vous n’avez pas non plus besoin d’utiliser un contexte unsafe quand l’opérande de l’opérateur sizeof
est le nom d’un type enum.
L’exemple suivant illustre l’utilisation de l’opérateur sizeof
:
public struct Point
{
public Point(byte tag, double x, double y) => (Tag, X, Y) = (tag, x, y);
public byte Tag { get; }
public double X { get; }
public double Y { get; }
}
public class SizeOfOperator
{
public static void Main()
{
Console.WriteLine(sizeof(byte)); // output: 1
Console.WriteLine(sizeof(double)); // output: 8
DisplaySizeOf<Point>(); // output: Size of Point is 24
DisplaySizeOf<decimal>(); // output: Size of System.Decimal is 16
unsafe
{
Console.WriteLine(sizeof(Point*)); // output: 8
}
}
static unsafe void DisplaySizeOf<T>() where T : unmanaged
{
Console.WriteLine($"Size of {typeof(T)} is {sizeof(T)}");
}
}
L’opérateur sizeof
retourne un nombre d’octets qui seraient alloués par la Common Language Runtime dans la mémoire managée. Pour les types struct, cette valeur comprend le remplissage, comme le montre l’exemple précédent. Le résultat de l’opérateur sizeof
peut différer de celui de la méthode Marshal.SizeOf, qui retourne la taille d’un type dans la mémoire non managée.
spécification du langage C#
Pour plus d’informations, consultez la section Opérateur sizeof de la spécification du langage C#.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour