簡體   English   中英

奇怪的字典包含C#或StringComaprer

[英]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資源管理器 ,您將看到類似以下內容:

Unicode資源管理器

現在,我們不知道該字符來自何處,但我懷疑您是從其他地方復制粘貼文本。

請注意,這里的字典, string或.NET中的任何內容都沒有錯……這只是源代碼中的一個問題。 如果您更清楚地表達相同的字符串,您將看到完全相同的行為:

{"\u200BDrop card", Drop},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM