0

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

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

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

4

3 回答 3

6

您可以只使用 aclass而不是 a struct

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

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

话虽如此,您可能只想直接使用LinkedList<T>框架中的类。

于 2013-05-14T19:24:13.230 回答
3

问题是字符串声明。您必须进入低级别并使用 char* 指针。使用unsafe伴随着离开托管世界的所有头痛......

于 2013-05-14T20:14:31.333 回答
-1

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

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

或像这样:

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

但最好只class用于链表。

于 2018-06-25T13:31:01.520 回答