繁体   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