我有以下代码:
string[] curries = { "abc", "ab", "abcd" };
var c = curries.Aggregate<string,string,int>("Some curries ",(a,b)=>a +" " +b,a=>a.Length);
Console.WriteLine(c);
输出是25.请有人解释一下吗?
答案 0 :(得分:4)
您的代码与以下内容相同。
string[] curries = { "abc", "ab", "abcd" };
string x = "Some curries ";
foreach (var curry in curries)
{
x = x + " " + curry;
}
var c = x.Length;
我认为代码是自我解释的!
在foreach循环x
变量之后将有一个长度为25的字符串"Some curries abc ab abcd"
答案 1 :(得分:1)
Aggregate(IEnumerable,Func)方法使得对一系列值执行计算变得简单。此方法通过为源中的每个元素调用func一次来工作。每次调用func时,Aggregate(IEnumerable,Func)都会传递序列中的元素和聚合值(作为func的第一个参数)。 source的第一个元素用作初始聚合值。 func的结果替换了先前的聚合值。 Aggregate(IEnumerable,Func)返回func的最终结果。
因此,“一些咖喱”,“abc”,“ab”,“abcd”和3个空格“”被连接起来。因此总长度变为25。答案 2 :(得分:0)
你想要完成什么?只是附上咖喱串?假设这是你想要的,下面的聚合函数可以工作。
var c = curries.Aggregate("Some curries", (current, str) => current + (" " + str));
如果你想要字符串的长度,你可以只检查聚合字符串的长度。