C# 中的非托管类型 unmanaged type

2022年10月16日 | [csharp]


从 C# 7.3 开始,可使用 unmanaged 约束指定:类型参数为“非指针、不可为 null 的非托管类型”。

从 C# 8.0 开始,仅包含非托管类型的字段的 构造 结构类型也是非托管类型。


public struct Coords<T> where T : unmanaged
{
    public T X;
    public T Y;
}

非托管类型包括:

  1. sbytebyteshortushortintuintlongulongcharfloatdoubledecimal 或 bool
  2. 任何枚举类型
  3. 任何指针类型
  4. 任何用户定义的只包含非托管类型成员的 struct 类型。