Tag: 指针

删除C#不安全指针

我知道在C#中使用/unsafe标志,你可以使用指针。 在C / C ++中删除指针你会使用free(pointer); 并delete pointer; 分别。 但是,如何使用C#指针实现相同的效果?

如何在C#中存储函数指针

假设我想在List存储一组函数指针,然后稍后调用它们,甚至可能使用参数…就像我存储在Dict我可以用参数调用func吗? 我该怎么办?

在C#中从锯齿状数组转换为双指针

这里有一个简单的问题:有没有办法从锯齿状数组转换为双指针? 例如,将double[][]转换为double** 不幸的是,这不能仅仅通过强制转换(就像它可以在普通的旧C中一样)来完成。 使用fixed语句似乎也无法解决问题。 在C#中是否有任何(最好尽可能高效)的方法来实现这一目标? 我怀疑解决方案可能不是很明显,尽管我希望尽管是直截了当的。

无法获取地址,获取大小或声明指向托管类型的指针

我已经做了一些研究,但现在我仍然坚持为什么我仍然得到这个错误。 我有一个具有以下属性的结构: struct Account { //private attributes private double mBalance; private int mAccountNumber; private string mName; private string mDateCreated; } 我正在尝试执行以下操作: class BankManager { //private attributes private unsafe Account *mAccounts; private unsafe bool *mAccountsAvailable; private int mNumberAccounts; } 即使将我的类帐户转换为结构,对类BankManager中的属性使用“unsafe”,并告诉编译器它可以使用不安全的代码(在属性 – >构建中),我仍然会收到此错误 *mAccounts 任何想法为什么? 我很确定我在结构中使用的所有类型都是合法的,可以在c#中使用指针。 提前致谢!

GCHandle获取.net对象的地址(指针)

我设法得到一个.net对象的地址 GCHandle objHandle = GCHandle.Alloc(obj,GCHandleType.WeakTrackResurrection); int address = GCHandle.ToIntPtr(objHandle).ToInt32(); 我可以通过回忆起这个对象 Object obj = GCHandle.FromIntPtr(IntPtr(address)).Target; 好吧,目的是将地址存储在本机类中,并具有哪个本机对象与哪个.net对象相关联的信息。 AFAIK地址不会因为分配而改变,是真的还是有人有更好的想法来实现我的目的? 谢谢

C#不安全值类型数组到字节数组转换

我使用扩展方法将float数组转换为字节数组: public static unsafe byte[] ToByteArray(this float[] floatArray, int count) { int arrayLength = floatArray.Length > count ? count : floatArray.Length; byte[] byteArray = new byte[4 * arrayLength]; fixed (float* floatPointer = floatArray) { fixed (byte* bytePointer = byteArray) { float* read = floatPointer; float* write = (float*)bytePointer; for (int i = 0; i < […]