我有一个这样的课程:
public class foo {
int par1;
int par2;
}
我还有一个foo类型链表:
public static LinkedList<foo> fooList = new LinkedList<foo>();
我想通过Value访问此类:
fooList.Find(???);
我可以放置什么而不是???为了价值?
答案 0 :(得分:2)
Find
的LinkedList<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对象)