我有以下代码来反转字符串:
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()没有!有什么指针吗?
答案 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());