首页 > 解决方案 > 如何在同一类的其他对象中找到未指定变量的值?C#

问题描述

我希望此方法适用于任何变量 - 即,将“价格”值传递给该方法,然后获取所有商品的总价格。

private int GetTotalValue(int stat){
    int total = 0;
    foreach(Item i in Vendor.items){
        totalStat += i.stat;
    }
    return total;
}

但是,它无法知道我作为参数传递的变量的名称,因此无法在其他对象中访问它。

我将如何告诉方法我正在传递什么变量,而不仅仅是它的值?

标签: c#classobjectvariablesmethods

解决方案


如果您总是想要某个属性值的总和,您可以将该逻辑封装到一个方法中,例如 GetVendorItemSum:

internal class Program
{
    private static void Main(string[] args)
    {
        var items = new[] {
            new Item {Price = 1},
            new Item {Price = 2}
                            };
        var vendor = new Vendor {Items = items};

        var vendorSum = GetVendorItemsSum(vendor, x => x.Price);
    }

    private static int GetVendorItemsSum(Vendor vendor, Func<Item, int> func)
    {
        return vendor.Items.Sum(func);
    }
}

public class Vendor
{
    public IEnumerable<Item> Items;
}

public class Item
{
    public int Price { get; set; }
}

推荐阅读