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

C#返回int数组时输出System.Int32[]的原因及代码问题排查

问题定位

你遇到的两个异常分别对应两个独立的代码问题:

  • 控制台输出System.Int32[]:直接将数组对象传入Console.WriteLine()时,.NET会调用数组默认的ToString()方法,该方法不会遍历展示数组元素,只会返回数组的类型全名字符串,这是C#的默认行为,不是数组内容异常。
  • 返回结果不符合预期:你在生成正确的唯一值排序数组r后,又在foreach循环里反复用错误的排序逻辑覆盖r的值:OrderBy(item => item2)的排序依据是固定的循环变量item2,而非元素本身,且这个循环本身是完全多余的逻辑,直接破坏了已经生成的正确结果。
修正代码

你原本的分组筛选唯一值的逻辑是正确的,只需要删除多余的循环覆写逻辑,调整数组打印方式即可:

public static int[] Unique(int[] arr)
{
    // 分组筛选出现次数为1的元素,按数值升序排序后转数组
    int[] result = arr.GroupBy(n => n)
                      .Where(group => group.Count() == 1)
                      .Select(group => group.Key)
                      .OrderBy(num => num)
                      .ToArray();

    // 正确打印数组:用string.Join拼接元素为可读字符串
    Console.WriteLine($"结果数组:[{string.Join(", ", result)}]");

    return result;
}

调用该方法传入[2,3,2,6,2]时,会正确返回[3,6],控制台也会输出可读的数组内容,不再显示类型名称。

内容的提问来源于stack exchange,提问作者MjSudo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:36:27