C# WriteLine char[]和#x2B;某物

C# WriteLine char[]和#x2B;某物,c#,char,C#,Char,为什么会发生这种奇怪的事情,当我试图通过 Console.WriteLine(word); 我得到了一个正确的结果,但是当我写 Console.WriteLine(word + " something"); 我得到“System.Char[]something”这是因为 Console.WriteLine(word); 它调用重载,该重载接受一个char[] 在 它在word上调用ToString(),结果是System.Char[] 要正确输出,请尝试: Console.WriteLin

为什么会发生这种奇怪的事情,当我试图通过

Console.WriteLine(word);
我得到了一个正确的结果,但是当我写

Console.WriteLine(word + " something");
我得到“
System.Char[]
something”

这是因为

Console.WriteLine(word);
它调用重载,该重载接受一个
char[]

它在
word
上调用
ToString()
,结果是
System.Char[]

要正确输出,请尝试:

Console.WriteLine(new string(word) + " something");

这是因为您的第一次尝试是写出一个
char
数组,它
控制台。WriteLine
使用重载接受有效输入

Console.WriteLine(word);
但是您的第二个结果似乎是错误的,因为您将
char[]
与字符串文字相结合。因此,
Console.WriteLine
尝试通过以下操作使您的
char[]
也成为字符串:

Console.WriteLine(word.ToString() + " something");
请注意,它在
单词
(内部)上调用
.ToString()
,使其成为
字符串。
char[]
上的
ToString
方法返回它的类型而不是它的值。因此给你一个奇怪的结果

您可以通过执行以下操作来修复它:

Console.WriteLine(new string(word) + " something");

发生这种情况的原因是string重载运算符+使其表现为那样。 如果您想使用这种方式,您必须首先从char[]单词中创建一个字符串。 试一试

Console.WriteLine()
有一个参数,它将
char[]
作为参数

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

试试这个

Console.WriteLine(new string(word) + " something");
你确定“字符串(单词)”有效吗?因为对我来说,它说“无效的表达式术语‘string’”,新字符串(单词)应该
Console.WriteLine(new string(word) + " something");
Console.WriteLine(new string(word) + " something");