Reversing Arrays, Array.Reverse()

本文关键字:Reverse Array Arrays Reversing | 更新日期: 2023-09-27 18:35:40

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

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() 不起作用!有什么指示吗?

Reversing Arrays, Array.Reverse()

arrInput.Reverse使用 LINQ Reverse 方法,该方法不会更改原始集合。您需要致电ToArray

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

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

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

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

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

您不必显式创建数组即可使用 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());