是否有一个函数可以让您将元素添加到 aList<T>
并int
返回索引?List<T>.Add()
是 avoid
并且不返回值。
List.Count-1
当您不使用线程时,这是一个解决方案。我的列表是一个静态成员,一次可以使用多个线程访问,使用 count-1 值完全是线程不安全的,很容易导致错误的结果。
该索引将用于对每个元素进行特定处理。
谢谢!
是否有一个函数可以让您将元素添加到 aList<T>
并int
返回索引?List<T>.Add()
是 avoid
并且不返回值。
List.Count-1
当您不使用线程时,这是一个解决方案。我的列表是一个静态成员,一次可以使用多个线程访问,使用 count-1 值完全是线程不安全的,很容易导致错误的结果。
该索引将用于对每个元素进行特定处理。
谢谢!
List 的方法不是单独的线程安全的;如果您只是List.Add
从多个线程重复调用,您很可能会遇到问题。如果您首先要使用 a List
,则需要使用某种同步技术,因此您不妨List.Count
在该关键部分内部包含一个调用。
您的另一个选择是使用设计为供多个线程使用的集合,例如System.Collections.Concurrent
.
如果你想要一个线程安全的索引,你需要锁定,因为即使你有索引,人们也可能删除了一个项目/更改了列表。
也就是说,您可以尝试 list.IndexOf(value) 返回值的索引(假设所有元素都是唯一的)
我相信列表有一个 indexOf() 方法,因此您可以在将元素添加到列表后调用它,如下所示:
list.add(element);
int index = list.indexOf(element);