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
运算符返回公共语言运行时将在托管内存中分配的字节数。 对于结构类型,该值包括了填充(如有),如前例所示。 sizeof
运算符的结果可能异于 Marshal.SizeOf 方法的结果,该方法返回某个类型在非托管内存中的大小。
C# 语言规范
有关详细信息,请参阅 C# 语言规范的 sizeof 运算符部分。
C# 运算符和表达式
指针相关的运算符
内存和跨度相关类型
.NET 中的泛型
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈