Как получить объект, хранящийся в переменной, из цикла foreach для передачи в метод? - PullRequest
0 голосов
/ 05 октября 2019

Я не могу получить свой элемент KartItem для передачи в параметр. Я попытался отладить, и он показывает данные в элементе, но затем, когда я пытаюсь передать его в Deals.BuyOneGetOneFree(item), он не работает.

Кусок кода из main

Console.WriteLine("Enter Item");
var inputItem = Console.ReadLine();
Console.WriteLine("Enter Pounds");
int inputPound = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Price");
double inputCost = double.Parse(Console.ReadLine());
kart.PutItemInKart(inputItem, inputPound, inputCost);
Console.WriteLine("your item in the kart");
foreach (var item in kart.GetKart())
{
    Deals.BuyOneGetOneFree(item); <--- Here
    Console.WriteLine(item.Item);          
}

Метод, который мне нужен для передачи элемента в

public static string BuyOneGetOneFree(KartItem inKart)
{  
    if (inKart.Item == "Lettuce" || inKart.Item == "Pespsi" || inKart.Item == "Water")
    {
        double newCost = inKart.Cost * 2;
        return "Your get one buy one credit applied today ! " + newCost.ToString();
    }
    return "There is no discount for your item at this time";
}

класс элементов карт:

public class KartItem
{
    public string Item { get; set; }
    public int Pound { get; set; }
    public double Cost { get; set; }
    public KartItem(string item, int pound, double cost)
    {
        Item = item;
        Pound = pound;
        Cost = cost;
    }
    public KartItem()
    {

    }
}

private List<KartItem> kart = new List<KartItem>();


public List<KartItem> PutItemInKart(string input = null, int inputNumber = 0, double inputPrice = 0)
{

        kart.Add(new KartItem()
        {
            Item = input,
            Pound = inputNumber,
            Cost = inputPrice
        });;

    return kart;
}

public List<KartItem> GetKart()  
{
    return kart;
}

1 Ответ

0 голосов
/ 05 октября 2019

Если вы пытаетесь увидеть сообщение, полученное с помощью метода BuyOneGetOneFree, вы можете сделать это.

foreach (var item in kart.GetKart())
{
    var message = Deals.BuyOneGetOneFree(item); // <--- Here
    Console.WriteLine(message); // show return message
    Console.WriteLine(item.Item);          
}

Кроме того, если вы хотите обновить Cost, вам нужнообновить свойство стоимости предмета

public static string BuyOneGetOneFree(KartItem inKart)
{  
    if (inKart.Item == "Lettuce" || inKart.Item == "Pespsi" || inKart.Item == "Water")
    {
        double newCost = inKart.Cost * 2;
        inKart.Cost = newCost;
        return "Your get one buy one credit applied today ! " + newCost.ToString();
    }
    return "There is no discount for your item at this time";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...