可能的意外参考比较问题

时间:2013-09-09 13:58:28

标签: c# winforms

我可以问一下,当我没有解决这个问题时可能会导致什么?

第二个问题是修复它的可能性。

我收到以下代码:

if (cb_vyber_cena.SelectedItem == "Jiná"){ cena_zaj = txt_jin_cena.Text;} 

我收到以下警告:

  

可能的意外参考比较;得到一个价值比较,   施放左侧以输入'string'

1 个答案:

答案 0 :(得分:8)

==作为static操作重载,而不是virtual操作。如果SelectedItem被输入object,则只会执行引用相等检查。如果您打算将值作为字符串进行比较,则需要添加一个强制转换:

if ((string)cb_vyber_cena.SelectedItem == "Jiná") {
    cena_zaj = txt_jin_cena.Text;
} 

这将允许它使用==类型重载的string。请注意,如果您不确定SelectedItem是否为string,则可能还需要进行类型测试:

if ((cb_vyber_cena.SelectedItem as string) == "Jiná") {
    cena_zaj = txt_jin_cena.Text;
} 

或者,您可以使用virtual的{​​{1}}实现:

Equals

注意我在左侧使用if ("Jiná".Equals(cb_vyber_cena.SelectedItem)) { cena_zaj = txt_jin_cena.Text; } 以避免"Jiná"SelectedItem时出现问题。