sizeof – operátor (Referenční příručka jazyka C#)

Operátor sizeof vrátí počet bajtů zabíraných proměnnou daného typu. Argumentem operátoru musí být název nespravovaného typu nebo parametr typu, který je omezen sizeof na nespravovaný typ.

Operátor sizeof vyžaduje nezabezpečený kontext. Výrazy uvedené v následující tabulce se však vyhodnocují v době kompilace na odpovídající konstantní hodnoty a nevyžadují nebezpečný kontext:

Výraz Konstantní hodnota
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

Také není nutné použít nezabezpečený kontext, pokud operand operátoru je sizeof název typu výčtu.

Následující příklad ukazuje použití sizeof operátoru :

using System;

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

Operátor vrátí počet bajtů, které by byl přidělen modul sizeof CLR (Common Language Runtime) ve spravované paměti. Pro typy struktur tato hodnota zahrnuje jakékoli odsazení, jak ukazuje předchozí příklad. Výsledek operátoru se může lišit od výsledku metody , která vrací velikost typu sizeof Marshal.SizeOf v nespravované paměti.

specifikace jazyka C#

Další informace najdete v části Operátor sizeof specifikace jazyka C#.

Viz také