我正在寻找符合以下条件的集合:
- 集合中的元素永远不会重复。也就是说,某事
ISet<T>
-就像。 - 除非从集合中删除元素,否则集合中元素的顺序不会改变。 (在我的用例中,我根本不删除任何元素)。
- 我希望能够获取刚刚添加的元素的索引。由于要求 1,这意味着:接收该元素的索引(如果该元素已存在于集合中)或接收类似
.Count
的内容。如果该元素不存在。
我尝试使用OrderedSet集合,然后使用单行扩展方法获取元素的索引。问题是,每次我尝试在已经包含数千个元素的集合中添加新元素时,我的机器上大约需要 100 毫秒。当向一个巨大的集合中添加大量元素时,这是一件大事。
我怀疑获取索引可以在添加元素的同一位置完成。因此,我正在寻找一个可能存在的用于此目的的集合。
提前谢谢您。
最佳答案
怎么样:
public class SpecialList<T> : List<T>
{
public new int Add(T Item)
{
if (Contains(Item))
{
return IndexOf(Item);
}
else
{
base.Add(Item);
return Count - 1;
}
}
}
关于C# - 添加新元素时返回索引的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787915/