CodeBlanks Logo Icon CodeBlanks

Miktar güncelleme

C# kursu · Başlangıç · Ders 51/116

UpdateQuantity ve RemoveProduct ile sepeti yönetmeyi öğrenirsin.

Miktar güncelleme

Sepette bir ürünün miktarını değiştirmek için UpdateQuantity metodunu yazacağız. İmza: public void UpdateQuantity(string name, int quantity). Gövdede foreach ile ürünleri gezer, adı eşleşen ürünün Quantity özelliğini güncellersin.

Ayrıca RemoveProduct metoduyla ürünü sepetten çıkaracağız. Bu, for döngüsüyle dizin geriye gidip items.RemoveAt(i) çağrısı yaparak yapılır; geriye gitmek silmeye bağlı kaymaları güvenli kılar.

Geriye dönük silme

Bir listeyi foreach ile gezerken eleman silmek tehlikelidir; derleyici hata verir. Bunun yerine for döngüsü son dizinden geriye doğru gitmeli: for (int i = items.Count - 1; i >= 0; i--).

Geriye gitmek, bir silme yapıldığında sonraki dizinlerin kaymasını sorunsuz karşılar. Bu, listeyi değiştirerek gezmenin güvenli tek yoludur; LINQ ile RemoveAll da alternatiftir ama burada açık döngüyü öğreniyoruz.

Uygulama UpdateQuantity ve RemoveProduct yaz

Cart sınıfına iki metot ekle. public void UpdateQuantity(string name, int quantity): foreach ile ürünleri gez, adı eşleşen ürünün Quantity'sini güncelle. public void RemoveProduct(string name): for (int i = items.Count - 1; i >= 0; i--) ile geriye git, adı eşleşen ürünü items.RemoveAt(i) ile sil. Main Defter'i ekleyip miktarını 5 yapıyor ve Kalem'i silmeye çalışıyor; GetSubtotal 25*5 = 125 vermeli.

Örnek çözümü göster
public void UpdateQuantity(string name, int quantity) { foreach (var p in items) { if (p.Name == name) p.Quantity = quantity; } }
public void RemoveProduct(string name) { for (int i = items.Count - 1; i >= 0; i--) { if (items[i].Name == name) items.RemoveAt(i); } }
Örnek çözüm:
using System;
using System.Collections.Generic;

class Product
{
    public string Name { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
}

class Cart
{
    private List<Product> items = new List<Product>();

    public void AddProduct(Product product) { items.Add(product); }

    public double GetSubtotal()
    {
        double sum = 0;
        foreach (var p in items) sum += p.Price * p.Quantity;
        return sum;
    }

    public void UpdateQuantity(string name, int quantity)
    {
        foreach (var p in items)
        {
            if (p.Name == name) p.Quantity = quantity;
        }
    }

    public void RemoveProduct(string name)
    {
        for (int i = items.Count - 1; i >= 0; i--)
        {
            if (items[i].Name == name) items.RemoveAt(i);
        }
    }
}

class Program
{
    static void Main()
    {
        var cart = new Cart();
        cart.AddProduct(new Product { Name = "Defter", Price = 25, Quantity = 2 });
        cart.UpdateQuantity("Defter", 5);
        cart.RemoveProduct("Kalem");
        Console.WriteLine(cart.GetSubtotal());
    }
}

Kendini test et

  1. List üyesini işlevine eşle

    items.Count
    Eleman sayısı
    items.RemoveAt
    Dizinle silme
    items.Add
    Sonuna ekleme
    items[i]
    Dizinle erişim
  2. cart.UpdateQuantity("Defter", 5) ne yapar?

    cart.UpdateQuantity("Defter", 5);
    • Defter ürününün miktarını 5 yapar
    • Defter ürününü siler
    • Yeni Defter ekler
    • Toplamı 5 yapar
    Cevabı göster

    Defter ürününün miktarını 5 yapar — Doğru. UpdateQuantity adı eşleşen ürünün Quantity özelliğini günceller.

  3. items.RemoveAt çağrısını yaz

    for (int i = items.Count - 1; i >= 0; i--)
    {
        if (items[i].Name == name) ____(i);
    }
    Cevabı göster
    for (int i = items.Count - 1; i >= 0; i--)
    {
        if (items[i].Name == name) items.RemoveAt(i);
    }

Başlangıç bölümündeki tüm dersler