这是我的问题。为了解决我在方法中使用列表,但它只显示最后一个条目。并保持以前的数据。请解决问题 > 有一个图书馆。分别为书籍和图书馆定义类。图书馆必须包含名称和图书清单。书籍必须包含标题、作者、出版商、发行日期和 ISBN 号。在描述图书馆的类中,创建向图书馆添加图书、搜索预定义作者的图书、显示有关图书的信息以及从图书馆删除图书的方法。编写一个测试类,它创建一个类型库的对象,向其中添加几本书并显示每本书的信息。实现一个测试功能,它找到所有由 Stephen King 创作的书籍并删除它们。最后,显示其余每本书的信息。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication310{ class book { public string title; public string author; public string publisher; public string releasedate; public string ISBN; public void display() { Console.WriteLine(title); Console.WriteLine(author); Console.WriteLine(publisher); Console.WriteLine(releasedate); Console.WriteLine(ISBN); Console.WriteLine("======================="); } } class liberay : book { string libname; public static List<book> b=new List<book>(); public liberay(string libn) { libname = libn; } public void addbook(string t, string a, string p, string r, string i) { b = new List<book>() { new book{title=t,author=a,publisher=p,releasedate=r,ISBN=i} }; } public void show() { Console.WriteLine(libname); for (int i = 0; i < b.Count; i++) { b[i].display(); } } } class Program { static void Main(string[] args) { liberay obj = new liberay("name"); obj.addbook("a", "a", "a", "a", "a"); obj.addbook("b", "b", "b", "b", "b"); obj.show(); } }}
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
试试这个代码
当您调用 addbook 方法时,列表变量被初始化。所以它总是指向最后一个对象。
因此,它只指向您添加的最后一本书。
public void addbook(string t, string a, string p, string r, string i)
{
b = new List<book>()
{
new book{title=t,author=a,publisher=p,releasedate=r,ISBN=i}
};
}
->
public void addbook(string t, string a, string p, string r, string i)
{
b.Add(new book { title = t, author = a, publisher = p, releasedate = r, ISBN = i });
}
删除方法
public void RemoveBookFromISBN(string targetISBN)
{
var target = b.Find((x) => x.ISBN == targetISBN);
if(target != null)
b.Remove(target);
}
- 1 回答
- 0 关注
- 59 浏览
添加回答
举报
0/150
提交
取消