托管类型

Primitive Type

基元类型有 14 个。

1 2 4 8
整数 SByte(sbyte)
Byte(byte)
Int16(short)
UInt16(ushort)
Int32(int), UInt32(uint)
[x86] IntPtr(nint), UIntPtr(nuint)
Int64(long), UInt64(ulong)
[x64] IntPtr(nint), UIntPtr(nuint)
浮点 Float(float) Double(double)
布尔 Double(double)
字符 Char(char)

String(string)和Decimal(decimal)并不是基元类型。

Unmanaged Type

非托管类型,不涉及托管对象引用的值类型。

  • Primitive Type + Decimal(decimal)
  • enum
  • 指针类型(int*, long* 等)
  • struct(只包含 Unmanaged Type 的字段)

Blittable Type

基于P/Invoke操作,Blittable类型要求在托管内存和非托管内存具有完全一致的标识,在值传递过程中无需转换。

  • Primitive Type(bool, char除外,因各平台表示不同)
  • Blittable类型的一维数组
  • struct & class (采用SequentialExplicitly布局且只包含Blittable类型)

DateTime、DateTimeOffset、Guid不是Blittable类型。
DateTime/DateTimeOffset采用Auto布局。
Guid映射在内存中的字节依赖于字节序(Endianness)

.NET的基元类型包括哪些?Unmanaged和Blittable类型又是什么?

123

posted @ 2023-08-17 11:27  wesson2019  阅读(53)  评论(0编辑  收藏  举报