繁体   English   中英

什么时候使用 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);
        }
    }
}

感谢您的所有回答。

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

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

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

Console.Write(age.ToString());

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM