如何使用C#中的方法在列表中添加数据?我想添加,但它不能保存数据,只显示最后一个条目

问题描述 投票:-2回答:1

这是我的问题。为了解决我在方法中使用列表,但它只显示最后一个条目。并保留以前的数据。请解决

问题>有一个图书馆。分别为书籍和库定义类。该库必须包含名称和书籍列表。这些书必须包含标题,作者,出版商,发行日期和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();


        }

    }
}
c#
1个回答
0
投票

试试这段代码

调用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); 
    }
© www.soinside.com 2019 - 2024. All rights reserved.