在VisualStudio中(专业版2008年),我刚才注意到一些不一致的行为,并想知道是否有它后面的任何逻辑推理组合框项目比较和编译器警告
在WinForms项目,如果我用线
if(myComboBox.Items[i] == myObject)
我得到一个编译器警告,我可能会得到'可能的意外引用',因为我正在比较类型对象到类型MyObject。很公平。
但是,如果我不是使用一个接口来比较:
if(myComboBox.Items[i] == iMyInterface)
编译警告消失。
任何人都可以认为,如果有任何逻辑的原因,为什么会发生这种情况,或者只是编译器的工件不检查接口比较警告。有什么想法吗?
编辑在我的例子中,组合框被绑定到一个列表,但使用list<IMyInterface>.Cast<MyObject>().ToList<MyObject>()
它作为如果编译器只服用仍然假设我结合IMyInterface的名单已于生成的列表。
(对象和接口中的方法已被更改,以保护无辜)
奇怪的是我的组合被绑定到对象类型的列表,而不是接口类型,但是对象列表是使用Cast <>()。ToList <>()函数从接口列表生成的。很奇怪。感谢您的输入 – johnc 2008-09-19 01:50:08