使用unsafe之后可以在代码里使用指针,但我却没找到把指针指向new来的对象的办法,这样就没法使用动态数据结构了。比如像这样写的代码,根本没法通过编译:
Node* p = new Node();这个有办法解决吗?
Node* p = new Node();这个有办法解决吗?
解决方案 »
- 如何执行FlowLayoutPanel中的子控件的事件
- 如何将DGV中的int转化成枚举***寻求解决方案
- winform 怎么下载保存在数据库中的文件
- 怎么样去读USB上的证书。
- WebBrowser相关问题,请高手指点,解决后立刻给分。
- sqlsever 能不能象mdb一样设置一个永不重复的id字段
- 100分求助,怎样获得当前登录页面的用户的信息(域帐户)
- 在命令提示行里输入csc MyfirstApp.cs 说没有此命令?什么原因
- .net 混淆器Dotfuscator Community Edition 在ClickOnce方法部署时如何应用?
- 散分 !!!!!!!!
- System.IndexOutOfRangeException: 索引超出了数组界限
- 会树的朋友,指教一下
Node* p = new Node();这个p不就是新Node示例的指针吗
你看看这个文章里面说的,编译不通过,设置一下就可以了,你看看有用没
指针一般是用来处理短时间的操作,临时将内存地址固定,你的链表存储在.NET里面绝对不适合用指针。
{
byte[] arr = new byte[Marshal.SizeOf(obj)]; GCHandle handle = GCHandle.Alloc(obj, GCHandleType.Pinned);
void* pVer = handle.AddrOfPinnedObject().ToPointer(); fixed (byte* parr = arr)
{
*parr = *(byte*)pVer;
} handle.Free();
return arr;
} public static unsafe T GetObject<T>(byte[] bytes) where T : new()
{
T rect = new T();
GCHandle handle = GCHandle.Alloc(rect, GCHandleType.Pinned);
void* pVer = handle.AddrOfPinnedObject().ToPointer(); fixed (byte* b = bytes)
{
*(byte*)pVer = *b;
}
handle.Free();
return rect;
}
Node是个结构吗?那应该这样写:
Node node; 或者Node node = new Node();
Node*p = &node;对类的实例不能用&取地址。
Node node; 或者Node node = new Node();
Node*p = &node;
这样的方式的话,有可能被内存回收破坏掉吧?因为生成控制表和使用控制标的是在不同的方法里。我去试试对象看看
C#的指针不适合你这种场合。public class Node
{
public string Value { get; set; } public Node Next;
}
You chose a wrong tool. Why not use C++