如何将元素添加到List <t>并获取索引?</t>

时间:2012-10-17 14:47:51

标签: c#

是否有一个函数允许您将元素添加到List<T>并将索引作为int返回? List<T>.Add()void,不会返回值。

当您不使用线程时,

List.Count-1是一个解决方案。我的列表是一个静态成员,一次可以使用多个线程访问,使用count-1值完全是线程不安全的,很容易导致错误的结果。

该指数将用于对每个元素的特定处理。

谢谢!

3 个答案:

答案 0 :(得分:10)

List的方法不仅仅是线程安全的;如果你只是从几个线程反复调用List.Add,你很可能会遇到问题。如果您首先要使用List,则需要使用某种同步技术,因此您也可以在该关键部分内包含对List.Count的调用。

您的另一个选择是使用旨在由多个线程使用的集合,例如System.Collections.Concurrent中的线程。

答案 1 :(得分:0)

如果你想要一个线程安全索引你需要锁定,因为人们可能已经删除了一个项目/改变了列表,即使你有索引。

那就是说,你可以尝试list.IndexOf(value)返回值的索引(假设所有元素都是唯一的)

答案 2 :(得分:-2)

我相信该列表有一个indexOf()方法,因此您可以在将该元素添加到列表后调用它,如下所示:

list.add(element);
int index = list.indexOf(element);