First of all, a dictionary or any other hashtable functions using key-value pairs. The reason key, being known as key are meant to be unique. I believe you are looking for a container for value-value pair instead. For such containers, there is no point of using the values as indices as you would not know which pair you are trying to reference to.
In short, what is the point of having same indices more than once when you don’t know what you are retrieving using a particular index value?
If you really need a container that does not require unique references, just use an ArrayList to store the values and iterate through them.
ArrayList is a very good point, as well as the Dictionary-List, thanks!
And there are cases when you want to have value-value pairs, otherwise .NET wouldn’t have introduced the Tuple class.
As an example:
Yup but still what you want to do is not to retrieve a particular reference based off a key but to search the container for matching values. In such a case, you should not be looking at Dictionary or Hashtable
Tuple is not a dictionary at all. It doesn’t have indexes. It is just a generic data container. If you have to store multiple elements that could be the same, you could either have a List of Tuples or a Tuple with Lists.