繁体   English   中英

在字典上使用扩展方法

[英]Using an extension method on a dictionary

我不确定如何在字典上使用扩展方法。 如何指定我需要将 function 应用于值而不是键?

下面是一个示例代码,它在一个双精度列表和一个值为双精度值的字典上应用 Sum 扩展方法。 列表扩展方法工作正常,但字典扩展方法要求选择器 function。

    static void Main(string[] args)
    {
        List<double> list = new List<double>();
        list.Add(34.2);
        list.Add(234);
        Console.WriteLine(list.Sum());

        Dictionary<string, double> dictioanary = new Dictionary<string, double>();
        dictioanary.Add("a", 5.34);
        dictioanary.Add("b", 44);

        Console.WriteLine(dictioanary.Sum());
        Console.ReadKey();
    }

您必须将 lambda 传递给 Sum() function:

Console.WriteLine(dictioanary.Sum(kvp => kvp.Value));

您可以使用字典的Values集合。

我会做这样的事情:

public static int MyExtension<valueType,keyType>(this Dictionary<valueType,keyType> dict )
{
  return dict.Values.Sum();
}

字典的Values属性是ICollection<T> ( Link ) 与其编写自己的扩展方法,不如使用 Linq 的扩展。

using System.Linq;

 static void Main(string[] args)
    {
        List<double> list = new List<double>();
        list.Add(34.2);
        list.Add(234);
        Console.WriteLine(list.Sum());

        Dictionary<string, double> dictioanary = new Dictionary<string, double>();
        dictioanary.Add("a", 5.34);
        dictioanary.Add("b", 44);

        Console.WriteLine(dictioanary.Values.Sum()); // See?
        Console.ReadKey();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM