[英]Getting A Smaller List From A List Of Abstract Objects
我有一個名為Stock的抽象對象,以及名為Book and Journal的兩個子類。 我有一個名為stock的Stock項目列表,並且此列表是由Book和Journal對象組成的。 基本上,我想做的只是推斷列表中的“書籍”,但是我不斷收到一條錯誤消息,指出:
“ SimpleLibrary.exe中發生了類型'System.InvalidCastException'的未處理的異常
其他信息:無法將類型為'SimpleLibrary.Journal'的對象轉換為類型為'SimpleLibrary.Book'。”
我不明白為什么會這樣,因為我只想使用庫存中的Book物品,而不需要進行任何強制轉換,因此我的代碼如下:
public string getOnlyBooks()
{
string books = "";
foreach (Book book in stock)
{
books += book + "\n";
}
return books;
}
foreach語句不會隱式處理過濾。 您的語句將嘗試將庫存集中的每個對象轉換為Book,並且在遇到Journal對象時將拋出System.InvalidCastException。 請嘗試以下操作:
foreach (Stock s in stock)
{
Book book = s as Book;
if (book != null)
{
books += book + "\n";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.