按钮内容和字符串之间的比较

本文关键字:之间 比较 字符串 按钮 | 更新日期: 2023-09-27 18:08:32

我正在做一个包含虚拟键盘的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转换为字符串,但通知仍然出现。那么我该如何解决这个问题呢?

按钮内容和字符串之间的比较

试试这个:

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

as关键字与ToString()的差异:

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

尝试先使用'var'来强制转换键。然后检查你想要什么

var b =(字符串)btnVK_A.Content;

if (b == "a")btnVK_A。内容= "A";其他的btnVK_A。

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