首页 > 解决方案 > 如何从 foreach 循环中获取存储在变量中的对象以传递给方法?

问题描述

我无法将我的项目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;
}

标签: c#methodsconsole-application

解决方案


如果您试图查看该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";
}

推荐阅读