正如它所说:a + b
的结果是int
,但您希望它是一个char
。为了得到它编译你可以使用:
var res = reverse.Aggregate((a,b)=>(char) (a+b));
...但我不认为这会做你想要什么。
我建议你不要使用LINQ此下手:
private string Reverse(string strValue)
{
char[] chArray = strValue.ToCharArray();
Array.Reverse(chArray);
return new string(chArray);
}
注意,这不正常工作的事情等组合字符,代理对等
如果你真的想使用LINQ,你可以用做:
private string Reverse(string strValue)
{
return new string(strValue.Reverse().ToArray());
}
有没有必要打电话Aggregate
。如果你真的想使它缓慢和使用字符串连接与Aggregate
(这将是为O(n )),你可以做这样的:
private string Reverse(string strValue)
{
return strValue.Reverse().Aggregate("", (str, c) => str + c);
}
以下是我们提供的字符串种子值,所以参数str
将是一个字符串,+
将字符串连接,而不是字符另外。
可以使用StringBuilder
使其更有效率:
private string Reverse(string strValue)
{
return strValue.Reverse()
.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c))
.ToString();
}
...但我仍然不知道它是值得的......
为什么要这样聚合它?我不明白。 – BoltClock