【问题标题】:WriteLine char[ ] + somethingWriteLine char[ ] + 某事
【发布时间】:2013-07-25 12:33:35
【问题描述】:

为什么当我尝试通过

char[] word 写入控制台时会发生这种奇怪的事情
Console.WriteLine(word);

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

Console.WriteLine(word + " something");

我得到“System.Char[]某事”?

【问题讨论】:

    标签: c# char


    【解决方案1】:

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

    Console.WriteLine(word);
    

    但是您的第二个结果似乎是错误的,因为您将 char[] 与字符串文字组合在一起。所以Console.WriteLine 试图让你的char[] 也成为一个字符串,这样做:

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

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

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

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

    【讨论】:

      【解决方案2】:

      这是因为

      Console.WriteLine(word);
      

      它调用WriteLine 重载,它采用char[]

      Console.WriteLine(word + " something");
      

      它在word 上调用ToString() 导致System.Char[]

      要正确输出,请尝试:

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

      【讨论】:

        【解决方案3】:

        它发生的原因是 string 重载了 operator+ 的行为。 如果您想以这种方式使用它,您必须首先从您的 char[] 单词中创建一个字符串。 试试

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

        【讨论】:

        • 你确定 'string(word)' 有效吗?因为对我来说它说“无效的表达式术语'字符串'”
        • 新字符串(单词)应该
        【解决方案4】:

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

        "something" 是一个string literal,当您尝试连接stringchar[] 时,.ToString() 方法正在调用 auto。

        试试这个;

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

        【讨论】:

          猜你喜欢
          • 2013-05-09
          • 2013-02-09
          • 2016-01-11
          • 2021-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-11
          相关资源
          最近更新 更多