字符串比较无法正常工作?

时间:2010-06-23 12:55:18

标签: c# string-comparison

我正在使用这个library来挂钩键,我在将e.KeyCode.ToString()与相同的字符串进行比较时遇到了一些问题。

我有变量,其字符串相当于

Keys.Oemtilde - > Program.KeyboardTradeHotkey = "Oemtilde";

我把它保存在字符串中,因为我从xml文件中读取了该字符串,我似乎无法将字符串转换为Keys

如果我这样使用它:

            if (e.KeyCode.Equals(Keys.Oemtilde)) {
                    Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);
            } else {
                // failed to catch - executes else 
                Logging.AddToLog("[Keyboard][PRESS]");
            }

它工作正常,并执行Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);

如果我使用它:

            if (e.KeyCode.ToString() == Program.KeyboardTradeHotkey) {
                    Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);
            } else {
                // failed to catch - executes else 
                Logging.AddToLog("[Keyboard][PRESS]");
            }

它执行else子句。看起来String Compare在这种情况下确实不起作用,即使你们两个字符串(e.KeyCode.ToString()和Program.KeyboardTradeHotkey都是相同的。

这可能是什么原因?

4 个答案:

答案 0 :(得分:4)

另一个更改是使用string.Equals函数来比较字符串

string1.Equals(string2)

答案 1 :(得分:3)

我认为这是因为KeyCode.ToString()没有返回您期望它返回的内容。看一下Watch中的视图。

答案 2 :(得分:0)

==和.Equals()之间的区别是由于引用类型和值类型之间的差异。此链接提供了不同结果的示例:Comparison of == and .Equals()

我也同意pranay_stacker。

答案 3 :(得分:0)

无需查看您使用的第一个(工作)代码示例库,看起来它正在比较枚举值,因此它返回的是数字而不是字符串。