You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:27:37