在.NET框架中,有一個通用的接口IEnumerable<T>
其中來自未通用IEnumerable
繼承,並且它們都具有一個GetEnumerator()
方法。這兩個GetEnumerator()
之間唯一的區別是返回類型。 現在我有一個類似的設計,但是當我編譯代碼,編譯器說:IEnumerable.GetEnumerator()和IEnumerable <T> .GetEnumerator()
MyInterface<T>.GetItem()
「隱藏繼承成員」 MyInterface.GetItem()
」。如果需要隱藏,請使用新關鍵字。
MyInterface<T>.GetItem()
返回一個具體類型T,而MyInterface.GetItem()
返回類型System.Object。
所以我想如果BCL團隊的人編譯.net框架,他們會得到相同的警告。
我覺得有編譯器警告不好,你怎麼看?我該如何解決這個問題?我的意思是,當調用MyInterface<T>.GetItem()
時,我不想只是System.Object類型的一個實例。
在此先感謝! :-)
補充: 我說的接口過問:IMyInterface的從 IMyInterface的繼承,並且它們都具有的GetItem()方法(IMyInterface.GetItem()返回一個類型T,而IMyInterface的。 GetItem()返回類型System.Object)。問題是,如果我們的代碼只有這兩個接口,也就是沒有派生的具體類,編譯源代碼後我們會遇到編譯器警告。
嗨,我不是說這個,請在帖子中看到我的「補充」。謝謝:) – 2010-03-15 11:54:24
+1,即使你不能爲明確的接口實現指定訪問級別 – erikkallen 2010-03-15 12:18:48
@Dylan:根據編譯器建議使用new關鍵字。看到我上面的編輯。 – 2010-03-15 12:18:53