C#Action <T>,传递函数作为参数

kay*_*yak 3 c#

我想将一个条件作为Action传递给另一个方法."ComputerPriceGenerator"中的第一行有效,但如何使数组工作(第二行)?任何想法

我正在寻找建议......,CalculateAllPrice尚未设计

public void ComputerPriceGenerator()
{
    //Below line Works
    PriceMachine.CalculatePrice(cart.Computers[0],() => ComputerConverter(cart.Computers[0]));           
    //How to make this work, i don't want to loop it???
    PriceMachine.CalculateAllPrice(cart.Computers,() => ComputerConverter(??));
}

public void ComputerConverter(Computer comp)
{
    if (comp.Memory <= 2)
        comp.Discount = 10;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

你的CalculatePrice方法应该只是Action,IMO - 两种方法都应该采取Action<Computer>.所以我会有这样的方法:

public static void CalculatePrice(Computer computer, Action<Computer> action)
public static void CalcuateAllPrices(IEnumerable<Computer> computers,
                                     Action<Computer> action)
Run Code Online (Sandbox Code Playgroud)

并称他们为:

PriceMachine.CalculatePrice(cart.Computers[0], ComputerConverter);
PriceMachine.CalculateAllPrice(cart.Computers, ComputerConverter);
Run Code Online (Sandbox Code Playgroud)