Удаление объектов C#
Подскажи пожалуйста,почему у меня не удаляются объекты в SellProduct. Я первый раз покупаю себе к примеру 1 товар,потом второй второй раз нажимаю 1 и у меня список начинает дублироваться и получается каша
using System.Collections.Generic;
namespace Shop
{
class Program
{
static void Main(string[] args)
{
bool isExit = false;
Player player = new Player("Вася");
Seller seller = new Seller();
while (!isExit)
{
Console.WriteLine("1.Показать список товаров в магазине\n2.Купить товар\n3.Мои заказы");
int menu = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
switch (menu)
{
case 1:
seller.SellersProducts();
Console.WriteLine();
break;
case 2:
seller.SellersProducts();
seller.SellProduct(player);
break;
case 3:
player.ShowProducts();
break;
default:
break;
}
}
}
}
class Product
{
public int ID { get; private set; }
public string Name { get; private set; }
public int Count { get; private set; }
public Product(int id, string name, int count)
{
ID = id;
Name = name;
Count = count;
}
public void ShowInfo()
{
Console.WriteLine($"ID товара - {ID}, наименование - {Name}, в количестве - {Count}");
}
}
class Player
{
public List<Product> PlayerProducts = new List<Product>();
private string _name;
public Player(string name)
{
_name = name;
}
public void ShowProducts()
{
if (PlayerProducts.Count > 0)
{
Console.WriteLine("Ваши товары: ");
foreach (var product in PlayerProducts)
{
Console.WriteLine($"{product.Name} в количестве {product.Count}");
}
}
else
{
Console.WriteLine("Вы еще ничего не приобрели.");
}
Console.WriteLine();
}
public void AddProduct(Product id)
{
PlayerProducts.Add(id);
}
}
class Seller
{
public List<Product> Products = new List<Product>();
public void SellersProducts()
{
Products.Add(new Product(1, "Материнская плата", 1));
Products.Add(new Product(2, "Процессор", 1));
Products.Add(new Product(3, "Видеокарта", 1));
Products.Add(new Product(4, "Оперативная память", 1));
Products.Add(new Product(5, "Хард", 1));
Products.Add(new Product(6, "Клавиатура", 1));
Products.Add(new Product(7, "Мышка", 1));
foreach (var product in Products.ToArray())
{
product.ShowInfo();
}
}
public Product FindProduct(int id)
{
foreach (var product in Products)
{
if (product.ID == id)
{
return product;
}
}
return null;
}
public void SellProduct(Player player)
{
Console.WriteLine("Введите ID товара,который хотите купить: ");
int id = Convert.ToInt32(Console.ReadLine());
var findProduct = FindProduct(id);
if (findProduct != null)
{
player.AddProduct(findProduct);
Products.Remove(findProduct);
}
else
{
Console.WriteLine("Этот продукт уже продан!");
}
Console.WriteLine();
}
}
}```
Ответы (1 шт):
Автор решения: Alex F
→ Ссылка
Вы каждый раз вызываете seller.SellersProducts(), который добавляет продукты. Сделайте это один раз в конструкторе:
class Seller
{
public List<Product> Products = new List<Product>();
public Seller()
{
Products.Add(new Product(1, "Материнская плата", 1));
Products.Add(new Product(2, "Процессор", 1));
Products.Add(new Product(3, "Видеокарта", 1));
Products.Add(new Product(4, "Оперативная память", 1));
Products.Add(new Product(5, "Хард", 1));
Products.Add(new Product(6, "Клавиатура", 1));
Products.Add(new Product(7, "Мышка", 1));
}
public void SellersProducts()
{
foreach (var product in Products)
{
product.ShowInfo();
}
}
}