Neden mümkün olmadığına dair bu soruyu okudum , ancak soruna bir çözüm bulamadım.
.NET'ten bir öğe almak istiyorum HashSet<T>
. Bu imzaya sahip bir yöntem arıyorum:
/// <summary>
/// Determines if this set contains an item equal to <paramref name="item"/>,
/// according to the comparison mechanism that was used when the set was created.
/// The set is not changed. If the set does contain an item equal to
/// <paramref name="item"/>, then the item from the set is returned.
/// </summary>
bool TryGetItem<T>(T item, out T foundItem);
Kümeyi böyle bir yöntemle aramak O (1) olacaktır. A'dan bir öğeyi almanın tek yolu HashSet<T>
, O (n) olan tüm öğeleri numaralandırmaktır.
Bu soruna kendiminkinden başka bir çözüm bulamadım HashSet<T>
veya bir Dictionary<K, V>
. Başka bir fikrin var mı?
Not: Öğenin içerip içermediğini
kontrol etmek istemiyorum HashSet<T>
. HashSet<T>
Güncellemem gerektiğinden (başka bir örnekle değiştirmeden) içinde depolanan öğenin referansını almak istiyorum . Göndereceğim öğe TryGetItem
eşit olacaktır (kurucuya ilettiğim karşılaştırma mekanizmasına göre) ancak aynı referans olmayacaktır.