为什么我的数组包含我从未添加的整数? C#

时间:2015-07-03 18:42:06

标签: c# arrays

  int gameTurns = 12;
        do
        {               
            gameTurns -= 1;
            Console.WriteLine("     You have " + (gameTurns) + " attempts left.");
            Console.WriteLine();            
            Console.WriteLine();

            string userEnteredPassword = "";
            Console.WriteLine("Enter a password of 4 digits ");
            userEnteredPassword = Console.ReadLine();

           for (int i = 0; i < numbersToGuess.Length; i++)
            {
                numbersFromPlayer[i] = Convert.ToInt16(userEnteredPassword[i]);                    
                Console.WriteLine(numbersFromPlayer[i]);
            }

请注意,numbersToGuess的声明如下:

 for (int i = 0; i <= 3; i++) 
        {
            numbersToGuess[i] = Convert.ToInt16(sequence.Next(9));
            Console.WriteLine(numbersToGuess[i]);
        }

当我使用以下值运行代码时:1,2,3,4, 它打印:49,50,51,52。

1 个答案:

答案 0 :(得分:8)

是的,因为49是字符'1'的UTF-16代码单元。

如果输入“ABCD”,则会显示64,65,66,67。

Convert.ToInt16(char)记录为:

  

将指定的Unicode字符的值转换为等效的16位有符号整数。

如果你想转换每个字符使'0'变为0,'1'变为1等,你可以使用char.GetNumericValue(char)

window

或者如果您乐意相信播放器输入ASCII数字:

numbersFromPlayer[i] = (short) char.GetNumericValue(userEnteredPassword[i]);