假如我在 C#底下建立一个 classclass Test
{
    public double TA;
    public double TB;
}
然后再某一个地方将 Test 实体化,并建立一个Test的指标,这时候会发生一个错误讯息public Test TT = new Test();
public unsafe Test* ptr;
[错误讯息]:不能取得Managed型别的地址、大小,也不能宣告指向他的指标。看起来这样的方法是不能用的如果我想要达到类似的效果的话不知道 是否有其它方法呢?

解决方案 »

  1.   

    要在 “项目->属性->生成” 里选上“允许不安全代码”
      

  2.   

    回 gxingmin您说的这个我已经打勾了如果将程序改为  public  unsafe double *dptr;这样就可以了才会感觉class 不能这样写
      

  3.   

    把class Test改成struct public struct Test
     {
         public double TA;
         public double TB;
     }
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/y31yhkeb(v=VS.80).aspx
    看msdn上说c#指针只能指向值类型的地址,不能指向引用类型的地址,如果你的类是个轻量型的,可以考虑把该类写成struct,就可以用*操作符直接获取地址。如果非得用class,只能用IntPtr来搞指针
    在System.Runtime.InteropServices名称空间里,有一些用于
     在托管内存与非托管内存之间互操作的类。Marshal.GetIUnknownForObject()。
      

  5.   

    嗯 我的类不能用struct(上面程序范例只是一个概念而已)。所以 得用Marshal 这个类了,只是对于这个类别真的不是很熟悉,不知道有没有比较推荐的范例可以作为参考呢