[英]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.