gpt4 book ai didi

c# - 无法获取托管类型的地址、获取其大小或声明指向托管类型的指针

转载 作者:行者123 更新时间:2023-11-30 21:28:53 26 4
gpt4 key购买 nike

我正在尝试在 C# 中实现双链表,但我以前从未使用过指针,因此找不到解决方案。我正在尝试创建节点类,它将保存单个项目和指向相邻节点的指针。

// single elements in the list 
unsafe class Node { Node* previous}
{
public int data;
public Node *next;
public Node *prev = *previous;
}

我一直在标题中收到错误消息,但我不知道如何解决。

最佳答案

你根本不需要未分配的指针或unsafe。因为 Node 是一个类,所以当您将 Node 用作参数、字段、变量等时 - 这是对 Node 的引用 实例。 reference 这里的意思是“托管指针” - 即像指针一样,但具有完整的 GC 支持和类型安全等。所以您只需要 Node:

class Node
{
public int Data {get;set;}
public Node Next {get;set;} // Next/Previous might want "private set" if
public Node Previous {get;set;} // you are going to change them via methods
}

更具体地说,您不能轻易地使用非托管指针指向 C# 中的 - Node* - 这根本不是你能做的事。您可以使用 struct 来做到这一点,但是:您几乎肯定不应该。我希望这里的重点是使用 managed 指针,也就是引用,即 Node,而不是 Node*

关于c# - 无法获取托管类型的地址、获取其大小或声明指向托管类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55954285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com