C# 托管类型与非托管类型

C# 托管类型与非托管类型,c#,sizeof,unmanaged,managed,C#,Sizeof,Unmanaged,Managed,我想知道如何在C#中使用sizeof操作符 他们说:“用于获取非托管类型的字节大小。” 我知道托管代码和非托管代码之间的区别。但我的理解是,我用C#编写的所有代码(包括所有预定义和用户定义的类型)都由CLR管理。那么“非托管类型”是什么意思呢?术语“非托管类型”有点误导:不是在非托管代码中定义的类型。它是一种不包含垃圾收集器管理的引用的类型 在C#7.3中,甚至还有一个: […]不能是引用类型,也不能包含任何嵌套级别的任何引用类型成员 如果您有使用WinAPI的经验:最初建议的非托管类型名称是

我想知道如何在C#中使用
sizeof
操作符

他们说:“用于获取非托管类型的字节大小。”

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

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

在C#7.3中,甚至还有一个:

[…]不能是引用类型,也不能包含任何嵌套级别的任何引用类型成员



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

您当然可以在.NET程序中使用C/C++编写的库中的类型。这些被称为“非托管类型”。可能与您所指的页面上的实际定义重复。简单地说:strict,它本身不包含引用,在所有包含类型中,一直向下。之所以称之为非托管结构,是因为它不包含或引用垃圾收集器管理的任何数据。@Amy:不完全重复:托管代码中完全定义的结构可以是非托管结构,这是所有非托管类型的列表:@gonzobrains:这不完全是一个列表,这是一个自递归定义,但它包含一个原始非托管类型列表。