sizeof — OperatorC# (odwołanie)sizeof operator (C# reference)

sizeof Operator zwraca liczbę bajtów zajmowanych przez zmienną danego typu.The sizeof operator returns the number of bytes occupied by a variable of a given type. Argument sizeof operatora musi być nazwą typu niezarządzanego lub parametrem typu, który jest ograniczony do niezarządzanego typu.The argument to the sizeof operator must be the name of an unmanaged type or a type parameter that is constrained to be an unmanaged type.

Operator wymaga niebezpiecznego kontekstu. sizeofThe sizeof operator requires an unsafe context. Jednak wyrażenia przedstawione w poniższej tabeli są oceniane w czasie kompilacji do odpowiednich wartości stałych i nie wymagają niebezpiecznego kontekstu:However, the expressions presented in the following table are evaluated in compile time to the corresponding constant values and don't require an unsafe context:

WyrażenieExpression Stała wartośćConstant value
sizeof(sbyte) 11
sizeof(byte) 11
sizeof(short) 22
sizeof(ushort) 22
sizeof(int) 44
sizeof(uint) 44
sizeof(long) 88
sizeof(ulong) 88
sizeof(char) 22
sizeof(float) 44
sizeof(double) 88
sizeof(decimal) 1616
sizeof(bool) 11

Nie trzeba również używać niebezpiecznego kontekstu, gdy operand sizeof operatora jest nazwą typu wyliczeniowego. You also don't need to use an unsafe context when the operand of the sizeof operator is the name of an enum type.

Poniższy przykład ilustruje użycie sizeof operatora:The following example demonstrates the usage of the sizeof operator:

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

sizeof Operator zwraca liczbę bajtów, które zostałyby przydzielone przez środowisko uruchomieniowe języka wspólnego w pamięci zarządzanej.The sizeof operator returns a number of bytes that would be allocated by the common language runtime in managed memory. W przypadku typów struktur ta wartość obejmuje wszelkie uzupełnienia, jak pokazano w powyższym przykładzie.For struct types, that value includes any padding, as the preceding example demonstrates. Wynik sizeof operatora może się różnić od wyniku Marshal.SizeOf metody, która zwraca rozmiar typu w pamięci niezarządzanej.The result of the sizeof operator might differ from the result of the Marshal.SizeOf method, which returns the size of a type in unmanaged memory.

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz sekcję operator sizeof w C# specyfikacji języka.For more information, see The sizeof operator section of the C# language specification.

Zobacz takżeSee also