8

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

标题将类似于“X 值”或“分析和 XYZ 报告摘要”,我担心它们是否会在罕见字符或类似字符中出现异常。

我假设有大小限制,但希望它大于 256 个字符。MSDN 没有关于该主题的任何详细信息。

4

3 回答 3

9

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

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

于 2009-05-17T10:25:26.177 回答
7

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

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

于 2009-05-17T10:11:34.477 回答
1

由于密钥只是一个 .NET 字符串,请参阅这个相关的 SO 问题:.NET 字符串的最大可能长度是多少?

于 2009-05-17T10:16:22.780 回答