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

    提交和查看相关反馈