【发布时间】:2010-03-08 21:48:20
【问题描述】:
两个 .net 字符串是否有可能具有不同的哈希值?我有一个哈希表,其中包括关键的“路径”。当我循环遍历表中的元素以打印它时,我可以看到键存在。
但是,当尝试查找它时,没有匹配的元素。调试表明我要查找的字符串与我作为键提供的字符串具有不同的哈希值。
此代码位于 Castle Monorail 项目中,使用 brail 作为视图引擎。我正在寻找的密钥是由这样的盲文线插入的:
UrlHelper.Link(node.CurrentPage.LinkText, {@params: {@path: "/Page1"}})
然后,在这个方法中(在自定义的 IRoutingRule 中):
public string CreateUrl(System.Collections.IDictionary parameters)
{
PrintDictionaryToLog(parameters);
string url;
if (parameters.Contains("path")) {
url = (string)parameters["path"];
}
else {
return null;
}
}
密钥被打印到日志中,但函数返回 null。我不知道这甚至可能是 .net 字符串的问题,但我想这是某种编码问题?
哦,这是单声道。
根据要求,以下是日志中的相关行:
2010-03-08 22:58:00,504 [7] DEBUG Knickle.Framework.Routing.PageRoute (null) - Parameters: {System.String controller=null, System.String path=Page1, System.String path=/Page1, System.String action=null, System.String area=null}
另外,这里我在日志打印调用上方添加了一行代码:
parameters.Add("path", "Page1");
查看日志,您会注意到有两个“路径”键。调试器在表的不同位置显示这两个键。
【问题讨论】:
标签: .net mono hashtable castle-monorail brail