3

char[] word为什么当我尝试通过以下方式写入控制台时会发生这种奇怪的事情

Console.WriteLine(word);

我得到了正确的结果,但是当我写

Console.WriteLine(word + " something");

我得到“System.Char[]东西”?

4

4 回答 4

5

发生这种情况是因为您的第一次尝试是写出一个char数组,该数组Console.WriteLine使用重载作为有效输入。

Console.WriteLine(word);

但是您的第二个结果似乎是错误的,因为您将 achar[]与字符串文字组合在一起。因此,通过执行以下Console.WriteLine操作尝试使您char[]也成为字符串:

Console.WriteLine(word.ToString() + " something");

.ToString()请注意,它调用word(内部)使其成为string. 返回的ToString方法是类型而不是值。从而给你奇怪的结果。char[]

您可以通过以下方式修复它:

Console.WriteLine(new string(word) + " something");
于 2013-07-25T12:37:00.463 回答
1

这是因为对于

Console.WriteLine(word);

它调用WriteLine需要 a 的重载char[]

Console.WriteLine(word + " something");

ToString()它的呼吁word导致System.Char[]

要正确输出,请尝试:

Console.WriteLine(new string(word) + " something");
于 2013-07-25T12:36:45.813 回答
0

它发生的原因是字符串重载 operator+ 表现得像那样。如果您想以这种方式使用它,您必须首先从您的 char[] 单词中创建一个字符串。尝试

Console.WriteLine(new string(word) + " something");
于 2013-07-25T12:37:48.173 回答
0

Console.WriteLine()有一个作为参数的重载。char[]

"something"是一个字符串文字,当您尝试连接stringand时char[].ToString()方法正在调用 auto.

试试这个;

Console.WriteLine(new string(word) + " something");
于 2013-07-25T12:38:42.997 回答