通过LinkedList中的Value访问实例

时间:2014-01-30 09:50:54

标签: c# class linked-list

我有一个这样的课程:

public class foo {
    int par1;
    int par2;
}

我还有一个foo类型链表:

public static LinkedList<foo> fooList = new LinkedList<foo>();

我想通过Value访问此类:

fooList.Find(???);

我可以放置什么而不是???为了价值?

3 个答案:

答案 0 :(得分:2)

FindLinkedList<T>方法将采用T(在您的情况下为foo)并使用其相等方法(在您的情况下引用相等 - 相同的对象) - 因为你正在创建一个class)以确定相等。

如果您想通过其他一些相等的定义(例如成员的内容)找到,那么您可以使用LINQ

var found = fooList.First(f => f.par1 == 1);

获得第一场比赛(如果没有找到则投掷)。如果找不到,请使用FirstOfDefault返回null

答案 1 :(得分:0)

如果“按值”表示foo的实例,则只传递foo的实例。

foo foo1 = new foo();
foo foo2 = new foo();
foo foo3 = new foo();

var linkedList = new LinkedList<foo>(new[] {foo1, foo2, foo3});

LinkedListNode<foo> node = linkedList.Find(foo2);

答案 2 :(得分:0)

您可以使用Linq:

foo item = fooList.FirstOrDefault(i => i.par1 == 201);

如果您要使用大量对象,请考虑使用字典:

var dict = new Dictionary<int, foo>();
dict.Add(201, new foo(){par1 = 201, par2 = 567});
// ... add a lot of foo objects   
foo item = dict[201];

(此示例显示如何通过par1值查找foo对象)