指向C#中的struct以创建链接列表

时间:2013-05-14 19:22:20

标签: c# pointers struct linked-list

C#不喜欢指针,但我现在需要使用它们来创建一个链表,就像我们在C中一样。结构很简单:

    public unsafe struct Livro
    {
        public string name;
        public Livro* next;
    }

但我收到错误:“无法获取地址,获取大小,或声明指向托管类型的指针”。有什么想法吗?

4 个答案:

答案 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