【问题标题】:Array.ToString() returning System.Char[] c#Array.ToString() 返回 System.Char[] c#
【发布时间】:2015-01-23 09:08:21
【问题描述】:

我正在制作一个刽子手游戏,在游戏开始时,玩家必须猜测的单词被打印为星星。在尝试编写一次并且只是有我无法修复的混乱代码之后,我刚刚开始再次制作它。所以我决定最好再写一次。唯一的问题是,当我尝试使用 array.ToString(); 打印出我的数组时;它只是返回 System.char[]。见下文。

代码:

class Program
{
    static void Main(string[] args)
    {
        string PlayerOneWord;
        string PlayerTwoGuess;
        int lives = 5;

        Console.WriteLine("Welcome to hangman!\n PLayer one, Please enter the word which player Two needs to guess!");
        PlayerOneWord = Console.ReadLine().ToLower();

        var stars = new char[PlayerOneWord.Length];
        for (int i = 0; i < stars.Length ; i++)
        {
                stars[i] = '*';
        }

        string StarString = stars.ToString();

        Console.Write("Word to Guess: {0}" , StarString);

        Console.ReadLine();
    }
}

输出:

输出应该是Word to guess: Hello。

请有人解释为什么会发生这种情况,因为这不是我第一次遇到这个问题。

【问题讨论】:

  • new String(charArray)

标签: c# arrays for-loop output


【解决方案1】:

在简单数组上调用ToString 只会返回"T[]",而不管T 的类型是什么。它对char[]没有任何特殊处理。

要将char[] 转换为string,您可以使用:

string s = new string(charArray);

但是对于您的具体问题,还有一个更简单的解决方案:

string stars = new string('*', PlayerOneWord.Length);

构造函数public String(char c, int count) 重复c count 次。

【讨论】:

    【解决方案2】:

    变量stars 是一个字符数组。这就是您收到此错误的原因。正如MSDN中所述

    返回一个代表当前对象的字符串。

    为了从这个数组中的字符中获取一个字符串,你可以使用这个:

     Console.Write("Word to Guess: {0}" , new String(stars));
    

    【讨论】:

      【解决方案3】:

      正确的做法是:

      string StarString = new string(stars);
      

      ToString() 调用 Array 类的 ToString 方法的标准实现,该方法对所有 Array 都相同,并且与 object 类似,只返回完全限定的类名。

      【讨论】:

        【解决方案4】:

        试试这个代码:

        static string ConvertCharArr2Str(char[] chs)
        {
            var s = "";
            foreach (var c in chs)
            {
                s += c;
            }
            return s;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-16
          • 2013-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多