Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626

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

06.03.2016, 20:27. Показов 1787. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Допустим есть класс Book
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
C#
1
List<Book> listBook = new List<Book>();
Подскажите, как написать метод, который уменьшает поле Number у выбранной книги
C#
1
2
3
4
public void RemoveBook(Book book)
{
 
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2016, 20:27
Ответы с готовыми решениями:

Как произвести выборку одного поля по условию другого поля в коллекции?
Всем привет! Как произвести выборку одного поля по условию другого поля в коллекции? Т.е. допустим есть класс MyClass: public class...

Как найти уникальные поля в коллекции ?
Есть коллекция документов(LS), в документе есть поле, как получить массив с перечнем уникальных значений полей ? В голову приходит только...

Как изменить имя ключа в коллекции?
Есть коллекция Dictionary&lt;String, Process&gt; PrcDic; (Process - самодельный класс). А как изменить значение одного из ключей...

3
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.03.2016, 20:41
C#
1
2
3
4
public static void RemoveBook(Book book)
{
    book.Number--;
}
Добавлено через 4 минуты
Если метод в классе Book, то
C#
1
2
3
4
public void RemoveBook()
{
    Number--;
}
0
32 / 15 / 5
Регистрация: 19.11.2014
Сообщений: 626
06.03.2016, 21:00  [ТС]
Даценд, книга то ведь в коллекции лежит. То есть я ее предварительно добавил в коллекцию
C#
1
listBook.Add(book);
вот, теперь в метод я передаю не книгу из коллекции, а просто еще одну такую же книгу, по идее метод должен найти переданную книгу в коллекции и если она там есть, то уменьшить поле Number у книги в коллекции.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.03.2016, 22:52
Лучший ответ Сообщение было отмечено Chizel как решение

Решение

Chizel,
Как-то так:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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]--;
            }
        }
    }
}


Комментарии писать поленился.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2016, 22:52
Помогаю со студенческими работами здесь

Как в Struts отобразить поля сложных объектов, лежащих в коллекции в formbean-е?
Добрый день, я новичек в Struts, поэтому мой вопрос может показатся вам не лишеным легкой дымки идиотизма :) Допустим, у меня есть...

Как удалить элемент из коллекции, во время перебора этой коллекции foreach?
Прив. Смотрите что. Есть сервер, на нем 2 класса - Server &amp; ClientConnection. При подключении нового клиента в Server создается новый...

Получение новой коллекции путем фильтрации элементов коллекции находящихся в другой коллекции
Всем привет, нуждаюсь в помощи знатоков) Имеется вот такая иерархия если представить в JSON: { teachers: ...

Как изменить тип поля?
Помогите! Расскажите как программно изменить тип данных в поле. мне не важно как: через макрос, модуль или запрос, важно, чтобы не в...

Как изменить длину поля?
Как это не смешно, но не могу придумать, как штатными средствами изменить длину стрингового поля БД физически. а не представления. Просить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru