ReadOnlyCollection<T>
實現ICollection<T>
接口,它具有Add和Remove之類的方法。我知道如何使用屬性來隱藏Intellisense中的方法,但是如果我嘗試使用這些方法,怎麼會導致實際的編譯錯誤呢? (順便說一句,我知道在ROC上調用Add和Remove是沒有意義的,但這是一個關於導致繼承的memebers編譯錯誤,而不是使用正確的數據結構的問題)。ReadOnlyCollection如何隱藏添加和刪除方法
6
A
回答
16
他們與explicit interface implementation實現的,就像這樣:
void ICollection<T>.Add(T item) {
throw NotSupportedException();
}
的方法仍然是可調用的,但是隻有當你查看的對象爲ICollection<T>
。例如:
ReadOnlyCollection<int> roc = new ReadOnlyCollection<int>(new[] { 1, 2, 3 });
// Invalid
// roc.Add(10);
ICollection<int> collection = roc;
collection.Add(10); // Valid at compile time, but will throw an exception
2
事實上,通過實現從ICollection<T>
接口明確這些方法,你不能直接給他們打電話。
您必須明確地將對象(ReadOnlyCollection
實例)轉換爲ICollection<T>
。然後,您可以調用Add方法。 (因此,編譯器不會抱怨,雖然你會得到一個運行時異常)。
相關問題
- 1. 點擊添加/刪除溢出隱藏
- 2. 如何使用jquery刪除和隱藏?
- 3. 拉斐爾:如何添加/刪除或顯示/隱藏紙
- 4. 隱藏和刪除模糊
- 5. 添加,刪除和顯示方法
- 6. 無法從self.navigationcontroller.view中刪除/隱藏最近添加的視圖
- 7. HTML - JavaScript - 添加和刪除/隱藏元素
- 8. 最初隱藏然後動態添加和刪除行
- 9. 添加並刪除類使div顯示和隱藏
- 10. HTML-添加和刪除到收藏夾
- 11. 如何添加/刪除屬性和方法?
- 12. 刪除/隱藏CustomBadge
- 13. Scene套件(Swift):取消隱藏或重新添加隱藏/刪除的節點
- 14. 如何刪除/隱藏matplotlib滑塊值
- 15. VS2010:如何刪除/隱藏在Solution Explorer
- 16. 如何隱藏或刪除dom?
- 17. 如何刪除/隱藏GWT Tabpanel標題
- 18. 如何隱藏或刪除JLabel
- 19. 如何刪除隱藏的引號
- 20. 如何隱藏/刪除GridPanel中的行
- 21. 如何刪除或隱藏的UITableViewController
- 22. OpenGL:線框疊加隱藏線刪除
- 23. 覆蓋和隱藏方法
- 24. 無法刪除隱藏的JavaScript類
- 25. 無法刪除隱藏SASS 3.3.0寶石
- 26. 刪除鏈接和取消隱藏隱藏文件c#
- 27. 隱藏和刪除Admob橫幅
- 28. 隱藏/刪除頁眉和頁腳
- 29. 刪除/隱藏MySQL數據中添加的反斜槓
- 30. jQuery的工具提示:添加/刪除與顯示/隱藏