Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор sizeof возвращает количество байтов, занятых переменной заданного типа. В безопасном коде аргумент оператора sizeof должен быть именем встроенного неуправляемого типа.
Выражения, представленные в следующей таблице, вычисляются во время компиляции в соответствующие константные значения и не требуют небезопасного контекста:
| Выражение | Константное значение |
|---|---|
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 |
Размер встроенного неуправляемого типа является константой во время компиляции.
В небезопасном коде можно использовать sizeof следующее:
- Параметр типа, ограниченный неуправляемым типом, возвращает размер этого неуправляемого типа во время выполнения.
- Управляемый тип или тип указателя возвращает размер ссылки или указателя, а не размер объекта, на который он ссылается.
В следующем примере показано использование оператора 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)}");
}
}
Оператор sizeof возвращает количество байтов, выделенных средой CLR в управляемой памяти. Для типов структур , это значение включает любое заполнение, как показано в предыдущем примере. Результат оператора sizeof может отличаться от результата метода Marshal.SizeOf, который возвращает размер типа в неуправляемой памяти.
Важный
Значение, возвращаемое sizeof, может отличаться от результата Marshal.SizeOf(Object), который возвращает размер типа в неуправляемой памяти.
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C# в разделе Оператор sizeof.