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