反转数组,Array.Reverse()

时间:2014-12-30 23:58:12

标签: c#

我有以下代码来反转字符串:

Console.Title = "*****Reverse a String*****";
Console.WriteLine("*****Reverse a String*****");
Console.WriteLine("=> Enter the text to be reversed:");
string input = Console.ReadLine();
Console.WriteLine("=> Reversing...");
char[] arrInput = input.ToCharArray();
Array.Reverse(arrInput);
String final = new String(arrInput);
Console.WriteLine("=> {0}", final);
Console.WriteLine("=> Press any key to terminate.");
Console.ReadKey();

Array.Reverse(arrInput)有效,但是arrInput.Reverse()没有!有什么指针吗?

3 个答案:

答案 0 :(得分:4)

arrInput.Reverse使用LINQ Reverse方法,该方法不会更改原始集合。您需要在其上调用ToArray

var reversed = arrInput.Reverse().ToArray();

答案 1 :(得分:1)

arrInput.Reverse()返回一个可枚举的:

IEnumerable<char> inputEnumerable = arrInput.Reverse();

同样,Selman22指出,Reverse()将返回一个IEnumerable而不是一个数组,因此如果你想使用原始变量,你还必须添加ToArray()

arrInput = arrInput.Reverse().ToArray();

答案 2 :(得分:0)

您不必显式创建数组即可使用Reverse方法;你可以这样做:

// Get string from user as you're already doing
string input = Console.ReadLine();

// Reverse it and assign to new string
string reversed = new string(input.Reverse().ToArray());

换句话说,这段代码:

string input = Console.ReadLine();
Console.WriteLine("=> Reversing...");
char[] arrInput = input.ToCharArray();
Array.Reverse(arrInput);
String final = new String(arrInput);

可以简化为:

string input = Console.ReadLine();
Console.WriteLine("=> Reversing...");
String final = new String(input.Reverse().ToArray());