もう一度オブジェクトに関する質問に戻ります。 注記私は一般的にプログラミングに1ヶ月しかないので、これがばかげた質問であればごめんなさい。オブジェクトのリスト内の複数のオブジェクトをプロパティで削除する方法
今私はライブラリクラスとブッククラスをデザインしている宿題をいくつかやっています。このライブラリは数多くの本を保管することになっています。私はいくつかの方法でこのオブジェクトのリストを操作するはずです。方法のほとんどは、私が1つを除いて設計する方法を知っています。私は特定の著者とのすべての本のためにこのリストを検索し、それらを削除するはずです。私はこれに近づく方法を知らない。ブッククラスのプロパティを使用してリストから単一のオブジェクトを削除できますが、複数のオブジェクトを削除する方法はわかりません。ここで
class Library
{
public string Name { get; set; }
public List<Book> list = new List<Book>();
public List<Book> foundBooks = new List<Book>();
public Library(string name)
{
this.Name = name;
}
//Library Methods
public void AddBook(Book book)
{
list.Add(book);
}
public void PrintBookInfo(Book book)
{
Console.WriteLine("Title: "+ book.Title);
Console.WriteLine("Author " +book.Author);
Console.WriteLine("Publisher: "+ book.Publisher);
Console.WriteLine("Release Date: " + book.ReleaseDate.ToString());
Console.WriteLine("ISBN: " + book.ISBN);
Console.WriteLine();
}
public void PrintAllBooks()
{
foreach (Book book in list)
{
PrintBookInfo(book);
}
}
public Book SearchForBook(string name)
{
foreach (Book book in list)
{
if (book.Author == name)
{
PrintBookInfo(book);
return book;
}
}
return null;
}
public void DeleteBook(Book book)// this is the method im using to delete objects but I don't know how to extend this.
{
list.Remove(book);
}
}
私の本クラスは、最後に私のメインのこれまでの
class Book
{
//Properties
public string Title { get; set; }
public string Author { get; set; }
public string Publisher { get; set; }
public DateTime ReleaseDate { get; set; }
public int ISBN { get; set; }
public Book(string Title,
string Author,
string Publisher,
DateTime ReleaseDate,
int ISBN)
{
this.Title = Title;
this.Author = Author;
this.Publisher = Publisher;
this.ReleaseDate = ReleaseDate;
this.ISBN = ISBN;
}
}
です:私はこれを実装するために考え
class Program
{
static void Main(string[] args)
{
var library = new Library("Yishun Regional Library");
var bookOne = new Book("Harry Potter", "JK Rowling", "UK", DateTime.Today, 1165);
var bookTwo = new Book("Eragon", "Paolini", "Netherlands", DateTime.Today, 2565);
var bookThree = new Book("Harry", "JK Rowling", "UK", DateTime.Today, 1145);
library.AddBook(bookOne);
library.AddBook(bookTwo);
library.AddBook(bookThree);
Console.WriteLine("Hello Welcome To Yishun Library. Take a look at the books Availabe.");
Console.WriteLine();
foreach (Book book in library.list)
{
library.PrintBookInfo(book);
}
Console.WriteLine();
string name;
Console.WriteLine("Enter name of author: ");
name = Console.ReadLine();
var bookFound = library.SearchForBook(name);
library.DeleteBook(bookFound);
Console.WriteLine("Current list of books: \n");
library.PrintAllBooks();
}
一つの方法が見つかった図書の配列を作成してから削除することです本はforeachメソッドを使用していますが、これを実装する方法はわかりません。あるいは、私はすぐにforeachを使ってデータを操作できないことをすぐに知った。どんな助けもありがとう! ;]あなたLibrary
クラスにおいて
List <>オブジェクトから削除する場合は、リストの最後から開始して先頭に移動する必要があります。あなたがリスト1,2,3,4を持っていて、あなたが '2'を削除した場合、あなたはリストを通って進むときに '3'をスキップすることになります。したがって、私は(int index = myList.Count -1; index> = 0; index--)を使用します。 – jdweng