如何解决Iterator不显示.Name的原因
此代码的执行结果与我的预期不同。 您能告诉我Iterator不显示.Name的原因吗?
==理想结果=== 订一个 书B BookC
===真实结果=== 未处理的异常。 System.NullReferenceException:对象引用未设置为对象的实例。 在test.BookShelf.AppendBook(Book Name)在C:\ Users \ com16 \ source \ repos \ test \ test \ Class2.cs:第33行 在test.Program.Main(String [] args)在C:\ Users \ com16 \ source \ repos \ test \ test \ Program.cs:line 11
static void Main(string[] args)
{
BookShelf bookShelf = new BookShelf();
bookShelf.AppendBook(new Book("BookA"));
bookShelf.AppendBook(new Book("BookB"));
bookShelf.AppendBook(new Book("BookC"));
Iterator BookShelfIteratr = bookShelf.Iterator();
while(BookShelfIteratr.HasNext())
{
Book book = (Book)BookShelfIteratr.Next();
Console.WriteLine(book.Name);
}
}
public interface IAggegate
{
Iterator Iterator();
}
public interface Iterator
{
bool HasNext();
Book Next();
}
public class Book
{
public string Name { get; set; }
public Book(string name)
{
this.Name = name;
}
}
public class BookShelf : IAggegate
{
public List<Book> book { get; set; }
public void AppendBook(Book Name)
{
book.Add(Name);
}
public int LastIndex()
{
return book.Count;
}
//public string ReturnName(int index)
//{
// return book[index].Name;
//}
public Iterator Iterator()
{
return new BookShelfIterator(this);
}
}
public class BookShelfIterator: Iterator
{
public int index { get; set; }
public BookShelf BookShelf { get; set; }
public BookShelfIterator(BookShelf bookShelf)
{
this.index = 0;
this.BookShelf = bookShelf;
}
public bool HasNext()
{
if (index <= BookShelf.LastIndex()) return true;
else return false;
}
public Book Next()
{
index++;
return BookShelf.book[index];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。