C#不喜欢指针,但我现在需要使用它们来创建一个链表,就像我们在C中一样。结构很简单:
public unsafe struct Livro
{
public string name;
public Livro* next;
}
但我收到错误:“无法获取地址,获取大小,或声明指向托管类型的指针”。有什么想法吗?
答案 0 :(得分:6)
您可以使用class
代替struct
:
public class Livro
{
public string Name { get; set; }
public Livro Next { get; set; }
}
这将自动提供正确的行为。
话虽如此,您可能只想直接使用框架中的LinkedList<T>
类。
答案 1 :(得分:3)
问题是字符串声明。你必须进入低级并使用char *指针。使用unsafe
会带来离开托管世界的所有麻烦......
答案 2 :(得分:1)
有什么想法吗?
使用类而不是结构,然后指针成为引用:
public class Livro
{
public string name;
public Livro next;
}
然后使用属性而不是公共字段是个好主意。
答案 3 :(得分:-1)
您可以使用以下结构进行操作:
struct LinkedList
{
public int data;
public LinkedListPtr next;
public class LinkedListPtr
{
public LinkedList list;
}
}
或类似这样:
struct LinkedList
{
public int data;
public LinkedList[] next;
}
,最好只对链接列表使用class
。