C# 访问自定义链表对象的元素



>我在 c# 中创建了自定义链表。

链接列表.cs:

class LinkedList
{
    private Node Start;//Mazgas pr
    private Node End;//Mazgas pb
    private Node Current;// Mazas d saraso sasajai
    public LinkedList()
    {
        this.Start = null;
        this.End = null;
        this.Current = null;
    }
    public Object Get(int index)
    {
        for( Node curr = Start; curr != null; curr = curr.Next)
        {   
            if( curr.Index == index )
                return curr.Data;
        }
        return null;
    }
    public void PrintData()
    {
        for (Node curr = Start; curr != null; curr = curr.Next)
        {
            Console.WriteLine("{0}: {1}", curr.Index, curr.Data);
        }
    }
    public int Count()
    {
        int i = 0;
        for( Node curr = Start; curr != null; curr = curr.Next, i++);
        return i;
    }
    public void Add(Object data)
    {
        Node current = new Node(data, null);
        if (Start != null)
        {
            End.Next = current;
            End.Next.Index = End.Index + 1;
            End = current;
        }
        else
        {
            Start = current;
            End = current;
            End.Index = 0;
        }
    }
}

节点.cs:

class Node
{
    public Object Data { get; set; }
    public Node Next { get; set; }
    public int Index { get; set; }
    public Node() { }
    public Node(Object data, Node next )
    {
        Data = data;
        Next = next;
    }
    public override string ToString ()
    {
        return string.Format ("Data: {0}", Data);
    }
}

和部分.cs

class Part
{
    public string Code { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
    public Part(string code, string name, double price)
    {
        Code = code;
        Name = name;
        Price = price;
    }
    public Part() { }
    public override string ToString()
    {
        return string.Format("{0} {1}", Name, Code);
    }
}

问题是,当我创建列表LinkedList parts = new LinkedList()并向其中添加对象parts.Add(new Part("code", "name", 10));无法访问部件对象变量。我需要这样做:

for( int i=0; i<parts.Count(); i++)
{
    Console.WriteLine("{0}", (Part)Parts.Get(i).Name);
}

但它给了我错误:

错误 CS1061:类型"对象"不包含"名称"的定义 并且找不到类型为"对象"的扩展方法"名称"。是 您缺少程序集引用?(CS1061)

编辑:我需要这个链表对任何类型的对象都是灵活的。

(Part)Parts.Get(i).Name 等效于 (Part)(Parts.Get(i).Name),并且由于Get(i)的返回值属于 object 类型,并且对象没有Name属性,因此您收到了异常。

您可以通过以下方式更正它:

((Part)Parts.Get(i)).Name

注意:

  • 我想这只是为了学习目的。
  • 如果列表中的所有项目都属于同一类型,则可以将Generic类设置为类。拥有泛型Node<T>LinkedList<T>类,您可以更改输入参数并将值返回到 T 而不是 object
  • 在实际应用程序中,您可以使用可用的LinkedList<T>或其他通用数据结构。

相关内容

  • 没有找到相关文章

最新更新