托管与非托管类型

Managed vs. unmanaged types

reading an article 关于如何在 C# 中使用 sizeof 运算符。

他们说:"Used to obtain the size in bytes for an unmanaged type."

我知道托管代码和非托管代码之间的区别。但我的理解是,我用 C# 编写的所有代码(包括所有预定义和用户定义的类型)都由 CLR 管理。那么 "unmanaged types" 是什么意思?

术语 "unmanaged type" 有点误导:不是在非托管代码中定义的类型。它是一种不包含由垃圾收集器管理的引用的类型。

在 C# 7.3 中甚至还有 generic constraint unmanaged:

[...] must not be a reference type and must not contain any reference type members at any level of nesting.


如果您有使用 WinAPI 的经验:最初提议的非托管类型名称是 blittable