C#数组反转异常:调用Reverse()后未实现数组反转
问题:调用Reverse()后数组未反转的原因及解决方法
你遇到的问题核心是调用的LINQ Reverse()方法不会修改原数组。这个方法来自System.Linq.Enumerable扩展,它的作用是返回一个反转后的新序列,而不是直接修改你传入的原数组。你现在只是调用了方法但没接收返回值,所以原数组完全没变化,输出自然还是原顺序。
解决方法有两种,选其一即可:
方法1:接收LINQ Reverse()的返回值并重新赋值
把反转后的序列重新转成数组赋值给原变量:
symbol = symbol.Reverse().ToArray();
方法2:使用Array类的静态Reverse方法
这个方法专门针对数组,会直接在原数组上执行反转操作,无需返回值:
Array.Reverse(symbol);
修改后的完整代码(以方法2为例):
using System; using System.Linq; namespace Array.ReversingArrayChar { class Program { static void Main(string[] args) { string input = Console.ReadLine(); char[] symbol = input.Split(' ').Select(char.Parse).ToArray(); Array.Reverse(symbol); // 替换成Array的Reverse方法 for (int a = 0; a <= symbol.Length - 1; a++) { Console.Write(symbol[a] + " "); } } } }
简单区分下两种方法:
- LINQ的
Reverse():通用型方法,支持所有实现IEnumerable的集合,返回新序列不改动原数据。 Array.Reverse():数组专用,直接修改原数组,性能更优(无需创建新数组)。
内容的提问来源于stack exchange,提问作者Martin Kulev
相关产品推荐
相关产品推荐

