字典键中是否有字符限制?

时间:2009-05-17 10:09:55

标签: c# .net dictionary key key-value

在.NET中我可以使用任何字符串作为字典键吗?这是模板引擎的一部分,我计划允许用户添加自定义标头和值。

标题将类似于“X的价值”或“分析和XYZ报告的摘要”,我担心如果他们会在一个罕见的角色或类似的东西中得到例外。

我假设有大小限制,但期望它大于256个字符。 MSDN没有关于这个问题的任何细节。

3 个答案:

答案 0 :(得分:7)

字典对用作键和值的类型没有任何特殊的了解。无论对象类型如何,它都会简单地调用GetHashCodeEquals方法,以允许它将值放入正确的存储桶中并再次检索它。这意味着任何正确实现这些方法的类都可以用作键。

string类根据其值正确实现这些方法,因此只要您可以构造字符串的实例,就可以将其用作键。

答案 1 :(得分:4)

是的,它可以使用任何有效的字符串(限制为几十亿字节)。

顺便说一句,您可以传递一个自定义IEqualityComparer<T>,您可以将其传递给可能需要最大限制的Dictionary构造函数。

答案 2 :(得分:1)

由于密钥只是一个.NET字符串,请参阅此相关的SO问题:What is the maximum possible length of a .NET string?