繁体   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