1

我正在做一个包含虚拟键盘的 wpf 应用程序,当我点击 CapsLock 按钮时,我有这个通知:

Possibility of comparing references involuntary for a comparison of values​​, cast the left hand side to type 'string'

在这一行:

if (btnVK_A.Content == "a")
     btnVK_A.Content = "A";
else
     btnVK_A.Content = "a";

我做了转换btnVK_A.Content为字符串,但通知仍然出现。那么我该如何解决这个问题呢?

4

3 回答 3

4

尝试这个 :

if ((btnVK_A.Content as string) == "a")

as关键字和之间的区别ToString()

两者用于不同的目的。任何对象的ToString方法都应该返回该对象的字符串表示形式。转换是完全不同的,并且as关键字执行条件转换,如前所述。as关键字基本上是说“如果该对象是这种类型,请给我该对象的这种类型的引用”,而说ToString“给我该对象的字符串表示形式”。在某些情况下,结果可能是相同的,但不应将两者视为可互换的,因为正如我所说,它们的存在目的不同。如果您的意图是强制转换,那么您应该始终使用强制转换,而不是ToString

于 2013-04-10T13:58:01.003 回答
0

尝试首先通过强制转换来接受使用 'var' 的密钥。然后检查你想要什么。

var b=(string)btnVK_A.Content;

if (b == "a") btnVK_A.Content = "A"; 否则 btnVK_A.Content = "a";

于 2013-04-10T13:44:44.250 回答
0

您是否尝试使用 btnVK_A.Content.ToString() 或(字符串)btnVK_A.Content?由于 Button Content 属性是对象类型,如果您在比较之前不强制转换或将其转换为字符串,编译器会给您一个警告。

于 2013-04-10T13:47:12.467 回答