Blittable 类型
大多数数据类型在托管和非托管内存中具有共同的表示形式,而且不需要互操作封送处理程序进行特殊处理。 这些类型称为 blittable 类型,因为它们在托管和非托管代码之间传递时不需要进行转换。而且由于这样可以提高性能,因此应首选这些类型。
blittable类型:
属于blittable类型的复杂类型:
blittable 基元类型的一维数组,如整数数组。 但是,包含 blittable 类型变量数组的类型本身不是 blittable 类型。
所有只包含 blittable 类型(和作为格式化类型进行封送的类)的格式化的值类型。
所有只包含 blittable 类型(和作为格式化类型进行封送的类)的格式化的值类型。
non-blittable类型
在非托管环境中,某些托管数据类型要求具有不同的表示形式。 必须将这些非 blittable 数据类型转换为可以封送的形式。 例如,托管字符串就是非 blittable 类型,因为这些字符串必须转换为字符串对象后才能进行封送。
Non-blittable 类型 | 描述 |
---|---|
System.Array | 转换为 C 样式数组或 SAFEARRAY。 |
System.Boolean | 转换为 1、2 或 4 字节的值,true 表示 1 或 -1。 |
System.Char | 转换为 Unicode 或 ANSI 字符。 |
System.Class | 转换为类接口。 |
System.Object | 转换为变量或接口。 |
System.Mdarray | 转换为 C 样式数组或 SAFEARRAY。 |
System.String | 转换为空引用中的终止字符串或转换为 BSTR。 |
System.Valuetype | 转换为具有固定内存布局的结构。 |
System.Szarray | 转换为 C 样式数组或 SAFEARRAY。 |