它不起作用: -
if(keyval.Value == "menu") // false
但这有效: -
if(keyval.Value.ToString() == "menu") // true
这两者之间有什么区别。
为什么第一个条件不起作用?
答案 0 :(得分:5)
据推测,keyval.Value
的类型为object
。这意味着不是按值比较两个字符串,而是通过引用比较它们 - 它对于具有相同值的两个字符串完全有效,是一个不同的实例。
进行比较的正确方法是
if((string)keyval.Value == "menu")
如果值始终是字符串。或者只是避免将string
存储为object
s:)