【发布时间】:2013-07-25 12:33:35
【问题描述】:
为什么当我尝试通过
将char[] word 写入控制台时会发生这种奇怪的事情
Console.WriteLine(word);
我得到了正确的结果,但是当我写的时候
Console.WriteLine(word + " something");
我得到“System.Char[]某事”?
【问题讨论】:
为什么当我尝试通过
将char[] word 写入控制台时会发生这种奇怪的事情
Console.WriteLine(word);
我得到了正确的结果,但是当我写的时候
Console.WriteLine(word + " something");
我得到“System.Char[]某事”?
【问题讨论】:
发生这种情况是因为您的第一次尝试是写出 char 数组,Console.WriteLine 使用重载将其作为有效输入接受。
Console.WriteLine(word);
但是您的第二个结果似乎是错误的,因为您将 char[] 与字符串文字组合在一起。所以Console.WriteLine 试图让你的char[] 也成为一个字符串,这样做:
Console.WriteLine(word.ToString() + " something");
请注意,它在word(内部)上调用.ToString(),使其成为string。 char[] 上的 ToString 方法返回它的 type 而不是它的值。从而给你奇怪的结果。
您可以通过以下方式修复它:
Console.WriteLine(new string(word) + " something");
【讨论】:
这是因为
Console.WriteLine(word);
它调用WriteLine 重载,它采用char[]。
在
Console.WriteLine(word + " something");
它在word 上调用ToString() 导致System.Char[]
要正确输出,请尝试:
Console.WriteLine(new string(word) + " something");
【讨论】:
它发生的原因是 string 重载了 operator+ 的行为。 如果您想以这种方式使用它,您必须首先从您的 char[] 单词中创建一个字符串。 试试
Console.WriteLine(new string(word) + " something");
【讨论】:
Console.WriteLine() 有一个overload,它将char[] 作为参数。
"something" 是一个string literal,当您尝试连接string 和char[] 时,.ToString() 方法正在调用 auto。
试试这个;
Console.WriteLine(new string(word) + " something");
【讨论】: