当我尝试通过
将char[] word
写入控制台时,会发生这种奇怪的事情
Console.WriteLine(word);
我得到了正确的结果,但是当我写
时Console.WriteLine(word + " something");
我得到“System.Char[]
某事”?
答案 0 :(得分:3)
这是因为您的第一次尝试是写出char
数组,Console.WriteLine
使用重载作为有效输入接受。
Console.WriteLine(word);
但是您的第二个结果显示错误,因为您正在将char[]
与字符串文字组合在一起。因此Console.WriteLine
会尝试通过这样做来使char[]
成为字符串:
Console.WriteLine(word.ToString() + " something");
请注意,.ToString()
(内部)调用word
使其成为string
。 ToString
上的char[]
方法会返回类型,而不是它的值。从而给你奇怪的结果。
您可以通过执行以下操作来解决此问题:
Console.WriteLine(new string(word) + " something");
答案 1 :(得分:1)
这是因为
Console.WriteLine(word);
调用WriteLine
重载,需要char[]
。
在
Console.WriteLine(word + " something");
在ToString()
上调用word
,结果为System.Char[]
要正确输出,请尝试:
Console.WriteLine(new string(word) + " something");
答案 2 :(得分:0)
它发生的原因是字符串重载operator +就像那样。 如果你想以这种方式使用make,你必须首先用char []字创建一个字符串。 试试
Console.WriteLine(new string(word) + " something");
答案 3 :(得分:0)
Console.WriteLine()
有overload,其中char[]
为参数。
"something"
是string literal,当您尝试连接string
和char[]
时,.ToString()
方法正在调用自动。
试试这个;
Console.WriteLine(new string(word) + " something");