>我在 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>
或其他通用数据结构。