为何C#中char数组打印元素值,其他数组打印数据类型?
char数组与int数组Console.WriteLine输出差异原因
先看示例代码:
char[] c = new char[] {'a','b','c'}; int[] i = new int[] {1, 2, 3}; System.Console.WriteLine(c); System.Console.WriteLine(i);
运行这段代码时,char数组c会输出abc,而int数组i会输出System.Int32[],差异的核心原因是Console.WriteLine的重载机制:
- 针对
char[]类型,.NET提供了专门的Console.WriteLine(char[] value)重载方法,这个方法会直接把字符数组转成对应的字符串输出内容。 - 对于
int[]这类其他类型的数组,没有专门的重载方法,此时会调用接受object参数的通用重载Console.WriteLine(object value)。这个重载会调用对象默认的ToString()方法,而数组的默认ToString()实现只会返回自身的类型全称,不会遍历输出元素。
如果想要输出int数组的元素,可以手动将数组转换为字符串,比如用string.Join:
System.Console.WriteLine(string.Join(", ", i));
内容的提问来源于stack exchange,提问作者prakash m
相关产品推荐
相关产品推荐

