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

为何char数组ToString返回System.Char[]而非反转字符串?输出差异解惑

嗨,我来帮你把这两个问题彻底讲明白~

问题1:为何char数组的ToString方法返回System.Char[]而非反转后的字符串?

其实核心原因很简单:在C#里,所有数组(包括char[])都继承自System.Array基类,而Array并没有重写Object类自带的ToString()方法。Object的默认ToString()逻辑就是返回当前对象的类型全名,所以当你调用charArray.ToString()时,它只会告诉你“我是个字符数组类型”,完全不会把数组里的字符拼接成字符串——它根本没这个功能。

问题2:为什么第一个Console.WriteLine输出反转后的字符串,第二个却返回System.Char[]?

这是因为Console.WriteLine有多个重载方法,处理参数的逻辑不一样:

  • 当你直接把char[]传给Console.WriteLine时,它会匹配到专门为字符数组设计的重载:Console.WriteLine(char[] value)。这个重载会自动把字符数组转换成对应的字符串输出,所以你能看到反转后的内容。
  • 但如果你先调用charArray.ToString()再传进去,比如写Console.WriteLine(charArray.ToString()),这时候你传的是一个普通字符串(也就是System.Char[]这个类型名),所以输出的就是这个字符串本身了。

举个直观的代码例子,你大概率写了类似这样的代码:

char[] myChars = "test".ToCharArray();
Array.Reverse(myChars);
// 输出反转后的字符串:tset
Console.WriteLine(myChars);
// 输出类型名:System.Char[]
Console.WriteLine(myChars.ToString());

如果想手动把char数组转成字符串,别用ToString(),应该用new string(myChars),这样就能得到拼接后的字符串啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:11:25