.NET Dictionary object can hold a collection of keys and values. It allows you to iterate through these values using enumeration and you can also retrieve a value by using it's associated key. But what if you want to create a collection of items and access them both using their associated key or numeric index in the collection? I created a VB.NET class that I named IndexedDictionary that does exactly that. The class implements the generic IDictionary interface. Internally it contains an instance of a generic dicrtionary and also an instance of a List which holds the numeric position of each element in the dictionary.