Dot-Net

是否有像集合這樣的字典可以使用其值的屬性作為鍵?

  • November 1, 2013

而不是使用Dictionary<TKey,TValue>我想要某種類型的集合類,它可以使用值的屬性作為鍵,有這樣的東西嗎?

是的,有 - System.Collections.ObjectModel.KeyedCollection<TKey, TValue>

那是抽象的,就我所見,框架中沒有具體的派生類,但您需要實現的只是GetKeyForItem我所見。例如,您可以使用委託執行此操作:

public class DelegatingKeyedCollection<TKey, TItem> : System.Collections.ObjectModel.KeyedCollection<TKey, TItem>
{
   private readonly Func<TItem, TKey> keySelector;

   public DelegatingKeyedCollection(Func<TItem, TKey> keySelector)
   {
       this.keySelector = keySelector;
   }

   protected override TKey GetKeyForItem(TItem item)
   {
       return keySelector(item);
   }
}

引用自:https://stackoverflow.com/questions/1773950