簡體   English   中英

從抽象對象列表中獲取較小的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM