正如它所说:结果a + b
is an int
,但你希望它成为char
。为了得到它compile你可以使用:
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);
}
请注意,这doesn't正确处理诸如组合字符、代理对等之类的事情。
如果你真的想使用 LINQ,你可以这样做:
private string Reverse(string strValue)
{
return new string(strValue.Reverse().ToArray());
}
There's no need to call Aggregate
. If you really want to make it slow and use string concatenation with Aggregate
(it'll be O(n2)) you can do it like this:
private string Reverse(string strValue)
{
return strValue.Reverse().Aggregate("", (str, c) => str + c);
}
这里我们提供了一个字符串种子值,所以参数str
将是一个字符串并且+
将是字符串连接,而不是字符addition.
您可以使用它来提高效率StringBuilder
:
private string Reverse(string strValue)
{
return strValue.Reverse()
.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c))
.ToString();
}
……但我还是不确定这是否值得……