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

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

06.03.2016, 20:27. Показов 1816. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru