"FormatException" not thrown when ToInt32() method has invalid argument type

OTA*_*TAR 4 .net c# console

1)

class Program
{
    static void Main(string[] args)
    {
        int a;
        a = Convert.ToInt32( "a" );
        Console.Write(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

I get FormatException with message: Input string was not in a correct format. and this is quite understood.

2)

class Program
{
    static void Main(string[] args)
    {
        int a;
        a = Convert.ToInt32( Console.Read() );
        Console.Write(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

In second case, I can type any characters, for example abc and it displayed in console.

问题:为什么不抛出FormatException第二种情况以及为什么它可以成功使用非int字符?

UPDATE

with Console.ReadLine()method,返回string类型,也没有FormatException在控制台中成功地打印和打印任何字符.

class Program
{
    static void Main(string[] args)
    {
        int a;
        a = Convert.ToInt32(Console.ReadLine());
        Console.Write(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 6

的返回类型Console.Read()是一个int.

然后你打电话Convert.ToInt32(int):

返回指定的32位有符号整数; 没有执行实际转换.


Hos*_*Rad 5

因为输出Console.Read()int.这意味着它获得了你输入内容的int表示,所以如果你输入字符,它实际上得到了那个字符的int表示,一切都很好.

要了解详细情况:

int a;
a = Convert.ToInt32(Console.Read());  //input for example: abc
Console.WriteLine(a);                 //97
Console.WriteLine((char)a);           //a
Run Code Online (Sandbox Code Playgroud)