2つの.net文字列が異なるハッシュを持つことは可能ですか?私は、とりわけ重要な「パス」を備えたハッシュテーブルを持っています。テーブル内の要素をループして印刷すると、キーが存在することがわかります。
ただし、検索しようとすると、一致する要素がありません。デバッグは、私が探している文字列が、キーとして提供しているものとは異なるハッシュを持っていることを示唆しています。
このコードは、ビューエンジンとして点字を使用するCastleMonorailプロジェクトに含まれています。私が探しているキーは、次のようなブレイルラインによって挿入されます。
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");
ログを見ると、2つの「パス」キーがあることがわかります。デバッガーは、テーブルのさまざまな場所に両方のキーを表示します。