在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