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

时间:2013-04-10 13:35:30

标签: c# wpf string

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

3 个答案:

答案 0 :(得分:4)

试试这个:

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

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

这两个用于不同目的。任何对象的ToString方法都应该返回该对象的字符串表示。如前所述,转换是完全不同的,as关键字执行条件转换。 as关键字基本上表示“如果该对象是此类型,则向我提供此类型的引用”,而ToString表示“获取该对象的字符串表示”。结果在某些情况下可能是相同的,但两者绝不应该被认为是可以互换的,因为正如我所说,它们存在于不同的目的。如果您打算投射,则应始终使用演员,而不是ToString

答案 1 :(得分:0)

首先尝试使用'var'来接受密钥。 然后检查你想要的东西。

var b =(string)btnVK_A.Content;

if(b ==“a”)      btnVK_A.Content =“A”; 其他      btnVK_A.Content =“a”;

答案 2 :(得分:0)

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