Bagikan melalui


operator sizeof - menentukan kebutuhan memori untuk jenis tertentu

Operator sizeof mengembalikan jumlah byte yang ditempati oleh variabel dari jenis tertentu. Argumen ke operator sizeof harus berupa nama jenis tidak terkelola atau parameter jenis yang dibatasi untuk menjadi jenis tidak terkelola.

Operator sizeof memerlukan konteks yang tidak aman. Namun, ekspresi yang disajikan dalam tabel berikut dievaluasi dalam waktu kompilasi ke nilai konstanta yang sesuai dan tidak memerlukan konteks yang tidak aman:

Ekspresi Nilai konstanta
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

Anda juga tidak perlu menggunakan konteks yang tidak aman bila operand dari operator sizeof adalah nama dari jenis enum.

Contoh berikut menunjukkan penggunaan operator 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)}");
    }
}

Operator sizeof mengembalikan jumlah byte yang akan dialokasikan oleh runtime bahasa umum di memori terkelola. Untuk jenis struct, nilai tersebut menyertakan padding apa pun, seperti yang diperlihatkan contoh sebelumnya. Hasil operator sizeof mungkin berbeda dari hasil metode Marshal.SizeOf, yang mengembalikan ukuran jenis dalam memori tidak terkelola.

Spesifikasi bahasa C#

Untuk informasi lebih lanjut, lihat bagian Operator sizeof dari Spesifikasi bahasa C#.

Lihat juga