Как изменить поля членов коллекции - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Допустим есть класс Book
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;
        }
    }
}
И есть коллекция состоящая из экземпляров класса Book
List<Book> listBook = new List<Book>();
Подскажите, как написать метод, который уменьшает поле Number у выбранной книги
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]--;
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы