Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
L’opérateur sizeof
retourne le nombre d’octets occupés par une variable d’un type donné. Dans le code sécurisé, l’argument de l’opérateur sizeof
doit être le nom d’un type non managé ou d’un paramètre de type contraint à être un type non managé. Les types non managés incluent tous les types numériques, les types d’énumération et les types tuple et struct où tous les membres sont des types non managés.
Les expressions présentées dans le tableau suivant sont évaluées au moment de la compilation pour les valeurs constantes correspondantes et ne nécessitent pas de contexte non sécurisé :
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 |
Dans le code non sécurisé, l’argument à sizeof
peut inclure des types de pointeur et des types managés, y compris des paramètres de type non contraints. Les exemples incluent object
et string
.
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 le nombre d’octets alloués par le Common Language Runtime en mémoire managée. Pour struct types, cette valeur inclut tout remplissage, comme l’illustre l’exemple précédent. Le résultat de l’opérateur sizeof
peut différer du résultat de la méthode Marshal.SizeOf, qui retourne la taille d’un type dans mémoire non managée.
Dans le code non sécurisé, lorsque l’argument est un type managé, l’opérateur sizeof
retourne la taille d’une référence, et non le nombre d’octets alloués pour une instance de ce type.
Important
La valeur retournée par sizeof
peut différer du résultat de Marshal.SizeOf(Object), qui retourne la taille du type en mémoire non managée.
Pour plus d’informations, consultez la section Opérateur sizeof de la spécification du langage C#.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenant