[英]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.