Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any character limitation in Dictionary Keys?

In .NET can I use any string as a dictionary key? This is part of a templating engine and I'm planning allow users to add their custom headers and values.

Headers will be something like "Value of X" or "Summary of Analyse & XYZ Reports", I'm worried if they would get an exception in a rare character or something like that.

I assume there size limit but expecting it to be larger than 256 characters. MSDN hasn't got any details on the subject.

like image 810
dr. evil Avatar asked May 17 '09 10:05

dr. evil


2 Answers

The dictionary doesn't have any special knowledge of the types used as its keys and values. Irrespective of the object type it will simply call the GetHashCode and Equals methods to allow it to put the value in the right bucket and retrieve it again. Which means that any class which correctly implements these methods can be used as the key.

The string class does correctly implement these methods based on its value, so as long as you can construct an instance of the string, then you can use it as the key.

like image 175
Greg Beech Avatar answered Sep 21 '22 07:09

Greg Beech


Yes, it can use any valid string (which is limited to a couple billion bytes).

BTW, you might pass a custom IEqualityComparer<T> that you might pass to the Dictionary constructor which might require a maximum limit.

like image 26
mmx Avatar answered Sep 21 '22 07:09

mmx