Delen via


sizeof operator - bepaal de geheugenbehoeften voor een bepaald type

De sizeof operator retourneert het aantal bytes dat wordt bezet door een variabele van een bepaald type. Het argument voor de sizeof operator moet de naam zijn van een niet-beheerd type of een typeparameter die is beperkt tot een niet-beheerd type.

De sizeof operator vereist een onveilige context. De expressies die in de volgende tabel worden weergegeven, worden echter geƫvalueerd in de compilatietijd naar de bijbehorende constante waarden en vereisen geen onveilige context:

Expression Constante waarde
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

U hoeft ook geen onveilige context te gebruiken wanneer de operand van de sizeof operator de naam van een enum-type is.

In het volgende voorbeeld ziet u het gebruik van de sizeof operator:

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)}");
    }
}

De sizeof operator retourneert een aantal bytes die worden toegewezen door de algemene taalruntime in het beheerde geheugen. Voor structtypen bevat die waarde eventuele opvullingen, zoals in het voorgaande voorbeeld wordt gedemonstreerd. Het resultaat van de sizeof operator kan afwijken van het resultaat van de Marshal.SizeOf methode, waardoor de grootte van een type in onbeheerd geheugen wordt geretourneerd.

C#-taalspecificatie

Zie de sectie Grootte van de operator van de C#-taalspecificatie voor meer informatie.

Zie ook