Как изменить поля членов коллекции - C#
Формулировка задачи:
Здравствуйте! Допустим есть класс Book
И есть коллекция состоящая из экземпляров класса Book
Подскажите, как написать метод, который уменьшает поле Number у выбранной книги
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfTestListView
{
class Book
{
public string Author { get; set; }
public string Title { get; set; }
public int Number { get; set; }
public Book(string author, string title, int number)
{
Author = author;
Title = title;
Number = number;
}
}
}List<Book> listBook = new List<Book>();
public void RemoveBook(Book book)
{
}Решение задачи: «Как изменить поля членов коллекции»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//формируем библиотеку
Library lib = new Library();
lib.AddNew("Пелевин В.О.", "Чапаев и пустота", 10);
lib.AddNew("Пушкин А.С.", "Евгений Онегин", 15);
lib.AddNew("Булгаков М.Е.", "Мастер и Маргарита", 20);
lib.AddNew("Достоевский Ф.М.", "Бесы", 2);
//выдаем книги
lib.RemoveBook("Пелевин В.О.", "Чапаев и пустота");
lib.RemoveBook("Пелевин В.О.", "Чапаев и пустота");
lib.RemoveBook("Пелевин В.О.", "Чапаев и пустота");
lib.RemoveBook("Пелевин В.О.", "Чапаев и пустота");
lib.RemoveBook("Булгаков М.Е.", "Мастер и Маргарита");
lib.RemoveBook("Булгаков М.Е.", "Мастер и Маргарита");
lib.RemoveBook("Достоевский Ф.М.", "Бесы");
lib.RemoveBook("Достоевский Ф.М.", "Бесы");
lib.RemoveBook("Достоевский Ф.М.", "Бесы");
//возвращаем книги
lib.ReturnBook("Пелевин В.О.", "Чапаев и пустота");
lib.ReturnBook("Булгаков М.Е.", "Мастер и Маргарита");
//текущее состояние списка на экран:
List<LibraryBook> list = lib.GetLibrary();
foreach (LibraryBook lb in list)
{
Console.WriteLine(lb);
}
Console.ReadKey();
}
}
class Book
{
public string Author { get; set; }
public string Title { get; set; }
public Book(string author, string title)
{
Author = author;
Title = title;
}
public static bool operator == (Book book1, Book book2)
{
if (book1.Author==book2.Author && book1.Title==book2.Title)
return true;
else
return false;
}
public static bool operator != (Book book1, Book book2)
{
if (book1.Author==book2.Author && book1.Title==book2.Title)
return false;
else
return true;
}
}
class LibraryBook
{
public Book book { set; get; }
public int Number { set; get;}
public LibraryBook(string author, string title, int number)
{
book = new Book(author, title);
Number = number;
}
public static LibraryBook operator ++(LibraryBook book)
{
book.Number++;
return book;
}
public static LibraryBook operator --(LibraryBook book)
{
book.Number--;
return book;
}
public override string ToString()
{
return string.Format("{0}\t{1}\t{2}", book.Author, book.Title, Number);
}
}
class Library
{
List<LibraryBook> library;
public Library()
{
library = new List<LibraryBook>();
}
public List<LibraryBook> GetLibrary()
{
return library;
}
int FindBookIndex(Book book)
{
for (int i = 0; i < library.Count; i++)
{
if (book == library[i].book) return i;
}
return -1;
}
public void AddNew(string author, string title, int number)
{
library.Add(new LibraryBook(author, title, number));
}
public void ReturnBook(string author, string title)
{
int index = FindBookIndex(new Book(author, title));
if (index >= 0)
{
library[index]++;
}
}
public void RemoveBook(string author, string title)
{
int index = FindBookIndex(new Book(author, title));
if (index >= 0 && library[index].Number>0)
{
library[index]--;
}
}
}
}