什么时候使用 int.Parse?

When to use int.Parse?

请问为什么我们需要在第一个示例中使用 int.Parse 而在第二个示例中不用?

第一个示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Test
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string name = Console.ReadLine();
            int age= int.Parse(Console.ReadLine());
            Console.WriteLine("Name:"+ name);
            Console.WriteLine("Age:"+ age);
        }
    }
}

第二个例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Test
{
    public class Program
    {
        public static void Main(string[] args)
        {
             int age = 20;
             Console.Write(age);
        }
    }
}

在第一部分中,您必须将来自命令行的输入(字符串)转换为整数。在第二个中,您已经声明了一个整数,因此无需解析它。

虽然 是正确的,但我认为在第一个代码片段中对 int.Parse 的调用也是多余的。您使用它将输入的字符串转换为 int,然后在连接时将其转换回字符串。如果你真的对输入的年龄做了一些计算,确实需要解析。

在第一个示例中,您接收到一个字符串作为控制台输入。因为没有从 intstring 的隐式转换,所以您必须显式地将字符串解析为 int 才能将其分配给 integer.[= 类型的变量24=] 在第二个示例中,您不需要显式解析任何内容,因为 C# 正在内部调用 intToString() 方法。所以在内部也会发生转换,但你不必明确地进行。这与调用

相同
Console.Write(age.ToString());

喜欢评论中的@Damien_The_Unbeliever。在解析控制台输入时,您希望使用 int.TryParse() 来避免在接收非整数值作为输入时出现任何异常。这看起来像这样:

if(!int.TryParse(Console.ReadLine(), out int age))
{
   Console.WriteLine("Wrong input format");
}
else
{
   // Do something with age (of type int)
   Console.WriteLine($"Age: {age}");
}