问题:
借阅图书时,图书馆会自动知道和 将其从列表中删除。
代码(C#):
public class Library
{
public string Name { get; set; }
public List<Book> BookList { get; set; }
public Library()
{
BookList = new List<Book>();
BookList.Add(new Book("HR"));
BookList.Add(new Book("HR"));
BookList.Add(new Book("Tiger"));
BookList.Add(new Book("Lion"));
BookList.Add(new Book("Elephant"));
}
}
public class Book
{
public string Name { get; set; }
public Book(string name)
{
Name = name;
}
}
您好我花了很多时间来解决这个问题,但我根本不知道。
我需要使用委托活动吗?如果我使用委托事件,图书馆如何知道要删除哪个项目?
我不熟悉代表。我用Google搜索,但我仍然无法理解如何在此问题中使用委托。
或者这个问题可以在没有委托或事件的情况下以其他方式解决?
答案 0 :(得分:1)
public class Library
{
public string Name { get; set; }
public List<Book> BookList { get; set; }
public Library()
{
string[] books = new string[5] { "HR", "HR", "Tiger","Lion", "Elephant" };
BookList = new List<Book>();
foreach (string s in books) {
Book b = new Book(s);
b.borrowed += borrowed;
BookList.Add(b);
}
}
private void borrowed(Book b)
{
BookList.Remove(b);
}
}
public class Book
{
public delegate void BorrowedEventHandler(Book b);
public event BorrowedEventHandler borrowed;
public string Name { get; set; }
public Book(string name)
{
Name = name;
}
public void borrow()
{
borrowed(this);
}
}
答案 1 :(得分:0)
在这里查看装饰器设计模式:http://www.dofactory.com/net/decorator-design-pattern。向下滚动到“真实世界代码”。我相信如果没有代表的要求,这将有所帮助。