在 VisualStudio (Pro 2008) 中,我刚刚注意到一些不一致的行为,并想知道其背后是否有任何逻辑推理
在 WinForms 项目中,如果我使用该行
if(myComboBox.Items[i] == myObject)
当我将类型对象与类型 MyObject 进行比较时,我收到一个编译器警告,我可能会收到“可能的意外引用”。很公平。
但是,如果我改为使用接口进行比较:
if(myComboBox.Items[i] == iMyInterface)
编译警告消失了。
任何人都可以考虑是否有任何逻辑原因导致这种情况发生,或者只是编译器的一个工件不检查接口以获取比较警告。有什么想法吗?
编辑在我的示例中,组合框绑定到一个列表,但该列表是使用生成的list<IMyInterface>.Cast<MyObject>().ToList<MyObject>()
就好像编译器只是假设我绑定到 IMyInterface 列表。
(已更改对象和接口方法以保护无辜者)