指针在C#结构来创建一个链表(Pointer to struct in C# to create a

2019-09-03 05:29发布

C#不喜欢三分球,但我需要使用它们现在创建一个链表,就像我们会在C做的结构很简单:

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

但我得到的错误:“不能走的地址,获取的大小,或宣布一个指向托管类型”。 有任何想法吗?

Answer 1:

你可以只用一个class ,而不是一个struct

public class Livro
{
    public string Name { get; set; }
    public Livro Next { get; set; }
}

这将自动提供正确的行为。

话虽这么说,您可能希望只使用LinkedList<T>直接从类的框架。



Answer 2:

问题是字符串声明。 你必须去低级别和使用的char *指针。 使用unsafe自带离开管理的世界上所有的头痛...



Answer 3:

有任何想法吗?

使用一类,而不是一个结构,然后将指针变为参考:

public class Livro
{
    public string name;
    public Livro next;
}

然后它会使用属性而不是公共领域是一个好主意。



Answer 4:

你可以用这样的结构做到这一点:

struct LinkedList
{
    public int data;
    public LinkedListPtr next;
    public class LinkedListPtr
    {
        public LinkedList list;
    }
}

或者是这样的:

struct LinkedList
{
    public int data;
    public LinkedList[] next;
}

但最好只使用class的链表来代替。



文章来源: Pointer to struct in C# to create a linked list