C# 不喜欢指针,但我现在需要使用它们来创建一个链表,就像我们在 C 中所做的那样。结构很简单:
public unsafe struct Livro
{
public string name;
public Livro* next;
}
但我收到错误消息:“无法获取托管类型的地址、大小或声明指向托管类型的指针”。有任何想法吗?
C# 不喜欢指针,但我现在需要使用它们来创建一个链表,就像我们在 C 中所做的那样。结构很简单:
public unsafe struct Livro
{
public string name;
public Livro* next;
}
但我收到错误消息:“无法获取托管类型的地址、大小或声明指向托管类型的指针”。有任何想法吗?
您可以只使用 aclass
而不是 a struct
:
public class Livro
{
public string Name { get; set; }
public Livro Next { get; set; }
}
这将自动提供正确的行为。
话虽如此,您可能只想直接使用LinkedList<T>
框架中的类。
问题是字符串声明。您必须进入低级别并使用 char* 指针。使用unsafe
伴随着离开托管世界的所有头痛......
你可以用这样的结构来做到这一点:
struct LinkedList
{
public int data;
public LinkedListPtr next;
public class LinkedListPtr
{
public LinkedList list;
}
}
或像这样:
struct LinkedList
{
public int data;
public LinkedList[] next;
}
但最好只class
用于链表。