[英]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
,然后在连接它时将其转换回字符串。 如果您实际上对输入的年龄进行了一些计算,则确实需要解析。
在第一个示例中,您将收到一个字符串作为控制台输入。 因为没有从int
到string
隐式转换,您必须将字符串显式解析为int
才能将其分配给integer
类型的变量。
在第二个示例中,您不需要显式解析任何内容,因为 C# 在内部调用int
的ToString()
方法。 因此,在内部也发生了转换,但您不必明确地进行转换。 这将与调用相同
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.