Int32.Parse到底做了什么?

时间:2011-09-23 16:46:28

标签: c# visual-studio-2010

我刚开始学习C#。我正在读一本书,其中一个例子是:

using System;

public class Example
{
    public static void Main()
    {
        string myInput;
        int myInt;

        Console.Write("Please enter a number: ");
        myInput = Console.ReadLine();
        myInt = Int32.Parse(myInput);

        Console.WriteLine(myInt);
        Console.ReadLine();
    }
}

当我运行并输入说'五'并点击返回时,我得到'输入字符串格式不正确'错误。我不明白的是,我将字符串myInput转换为数字不是我吗?微软称In32.Parse'将数字的字符串表示形式转换为32位有符号整数等价物。那么当我输入五个单词时怎么会不起作用呢?它应该转换为整数不应该...混淆。谢谢你的建议。

3 个答案:

答案 0 :(得分:5)

'五'不是数字。它是一个4个字符的字符串,没有数字。 parse32正在寻找的是包含数字数字字符的STRING。你必须改为“5”。

答案 1 :(得分:2)

Int32.Parse期望的字符串表示是一个十进制数字序列(基数为10),例如"2011"。它不接受自然语言。

基本上是这样做的:

return 1000 * ('2' - '0')
     +  100 * ('0' - '0')
     +   10 * ('1' - '0')
     +    1 * ('1' - '0');

您可以通过传递不同的NumberStyles来稍微自定义Int32.Parse。例如,NumberStyles.AllowLeadingWhite允许输入字符串中的前导空格:" 2011"

答案 2 :(得分:1)

表示数字的单词不会被转换;它将表示数字的字符转换为实际数字。

字符串中的“5”作为ASCII(或unicode)字符表示存储在内存中.5的ASCII为0x35(十六进制)或53(十进制)。值为“5”的整数作为实际5存储在存储器中,即0101二进制数。