从抽象对象列表中获取较小的列表

时间:2016-02-23 17:41:08

标签: c# foreach

我有一个名为Stock的抽象对象和两个名为Book and Journal的子类。我有一个名为stock的Stock items列表,这个列表是Book和Journal的对象编译的。基本上我要做的只是推断列表中的书籍但是我不断收到一条错误消息说:

“SimpleLibrary.exe中发生了'System.InvalidCastException'类型的未处理异常

其他信息:无法将“SimpleLibrary.Journal”类型的对象强制转换为“SimpleLibrary.Book”。“

我不明白为什么会这样,因为我只想使用库存中的Book项目而不需要进行任何投射,我的代码如下:

grep -z $'^This.*\n<\\?xml.*\\?>' test.txt 

1 个答案:

答案 0 :(得分:1)

foreach语句不会隐式处理过滤。您的语句将尝试将库存集合中的每个对象转换为Book,并在遇到Journal对象时抛出System.InvalidCastException。请尝试以下方法:

foreach (Stock s in stock)
{
    Book book = s as Book;
    if (book != null) 
    {
        books += book + "\n";
    }
}