[英]c# weird Dictionary ContainsKey or StringComaprer
這是一種奇怪的魔術,ContainsKey返回false。 我嘗試將InvariantCulture比較器用於相同的結果。
GameCommands = new Dictionary<string, GameCommand>(StringComparer.Ordinal)
{
{"Start new game with deck", StartGame},
{"Tell color", TellColor},
{"Tell rank", TellRank},
{"Drop card", Drop},
{"Play card", Play},
};
Debug.WriteLine(GameCommands.ContainsKey("Tell color"));
假
我通過刪除鍵中的引號並再次鍵入來解決它。 我想知道為什么會這樣。
在某些字符串的開頭,您使用零寬度空格(U + 200B)。 例如,復制以下內容:
{"Drop card", Drop},
進入Unicode資源管理器 ,您將看到類似以下內容:
現在,我們不知道該字符來自何處,但我懷疑您是從其他地方復制粘貼文本。
請注意,這里的字典, string
或.NET中的任何內容都沒有錯……這只是源代碼中的一個問題。 如果您更清楚地表達相同的字符串,您將看到完全相同的行為:
{"\u200BDrop card", Drop},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.