是否有一个函数允许您将元素添加到List<T>
并将索引作为int
返回? List<T>.Add()
是void
,不会返回值。
List.Count-1
是一个解决方案。我的列表是一个静态成员,一次可以使用多个线程访问,使用count-1值完全是线程不安全的,很容易导致错误的结果。
该指数将用于对每个元素的特定处理。
谢谢!
答案 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);