2011-03-15 68 views
0

我有一个三维数组,我想IntPtr在其上点所以在这里我也..can有人告诉我,如果它是正确的或不...指向3D阵列

fixed (Int16* mypointer = &myvolume[0, 0, 0]) 
{ 
    //then i cast mypointer as IntPtr 
} 

通知, myvolume的尺寸是200 x 100 x 100

+1

你有没有试过看它是否有效? – thecoop 2011-03-15 12:40:38

+0

你确实明白在退出'fixed'块后IntPtr将无效,对吗? – 2011-03-15 12:49:12

+0

是的,我知道,这就是为什么在插入我的代码的固定块里面,谢谢你的关心 – 2011-03-15 13:14:18

回答

3

你确定你真的想要的是一个不安全指针吗?在C#中使用这样的指针是非常罕见的。

埃里克利珀最近写一个simple class that offers some of the behavior of pointers,而不诉诸不安全的代码。您可以考虑将其扩展到您的多维数组。

+0

感谢克里斯,事实上,我现在使用的是需要一个指向我的容积,这就是为什么我使用指针vtk的一些算法,我就检查这篇文章,谢谢你的努力 – 2011-03-15 13:15:50

+0

这并不像你想象的那么难得。指针算法是迭代这种数组的最快速方式,您会在性能关键型应用程序中找到很多这种类型的代码。 – MattDavey 2011-03-15 13:41:32

+0

@MattDavey我同意这里有它的地方,并且自己使用它来处理图像。危险之处在于,新的C#中“高性能”计算的程序员会直接跳到指针而不尝试/分析标准C#解决方案。 – 2011-03-15 13:53:00