日期:2014-05-18  浏览次数:21228 次

关于报错信息(struct与托管类型)的疑问
过去一直知道:
1、struct是值类型
2、值类型在堆栈上
3、UNSAFE时&可以返回内存地址
但是当我测试int char enum等类型时都返回了内存地址。
但是当我&(struct)时报错“无法获取托管类型(“ConsoleApplication37.Person1”)的地址和大小,或无法声明指向它的指针 ”
Person1是一个struct。 不知是我哪里理解有误。为什么struct变成了托管类型放在了托管堆而不是堆栈上?

------解决方案--------------------
见MSDN

下列类型都可以是指针类型:

sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float、 double、 decimal 或 bool。 

任何 枚举类型。 

任何指针类型。

仅包含非托管类型的字段的任何用户定义的结构类型。

看最后一句