在 C# 中读取整数的替代方法
本文关键字:方法 整数 读取 | 更新日期: 2023-09-27 18:31:23
我知道使用Convert.To
方法读取输入,但是除了这个之外还有什么方法可以读取。
int k = Convert.ToInt16(Console.ReadLine());
从控制台应用程序读取输入的最简单方法是Console.ReadLine
。有可能的替代方案,但它们更复杂,并且保留用于特殊情况:请参阅 Console.Read 或 Console.ReadKey。
然而,重要的是转换为整数,这不应该使用 Convert.ToInt32
或 Int32.Parse
来完成,而应该使用 Int32.TryParse
int k = 0;
string input = Console.ReadLine();
if(Int32.TryParse(input, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + input + " is not a valid integer");
使用Int32.TryParse
的原因在于,您可以检查是否可以转换为整数。相反,其他方法会引发一个异常,您应该处理该异常,使代码流复杂化。
您可以为控制台创建自己的实现,并在所需的任何位置使用它:
public static class MyConsole
{
public static int ReadInt()
{
int k = 0;
string val = Console.ReadLine();
if (Int32.TryParse(val, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + val + " is not a valid integer");
return k;
}
public static double ReadDouble()
{
double k = 0;
string val = Console.ReadLine();
if (Double.TryParse(val, out k))
Console.WriteLine("You have typed a valid double: " + k);
else
Console.WriteLine("This: " + val + " is not a valid double");
return k;
}
public static bool ReadBool()
{
bool k = false;
string val = Console.ReadLine();
if (Boolean.TryParse(val, out k))
Console.WriteLine("You have typed a valid bool: " + k);
else
Console.WriteLine("This: " + val + " is not a valid bool");
return k;
}
}
class Program
{
static void Main(string[] args)
{
int s = MyConsole.ReadInt();
}
}
这是您可以遵循的替代和最佳方法:
int k;
if (int.TryParse(Console.ReadLine(), out k))
{
//Do your stuff here
}
else
{
Console.WriteLine("Invalid input");
}
您可以使用int.TryParse
查看示例
var item = Console.ReadLine();
int input;
if (int.TryParse(item, out input))
{
// here you got item as int in input variable.
// do your stuff.
Console.WriteLine("OK");
}
else
Console.WriteLine("Entered value is invalid");
Console.ReadKey();
有 3 种类型的整数:
1.) 短整数:16 位数字(-32768 到 32767)。在 c# 中,可以将短整数变量声明为 short
或 Int16
。
2.) "普通"整数:32 位数字(-2147483648 到 2147483647)。声明一个带有关键字 int
或 Int32
的整数。
3.) 长整数:64 位数字(-9223372036854775808 到 9223372036854775807)。声明一个带有 long
或 Int64
的长整数。
区别在于您可以使用的数字范围。您可以使用 Convert.To
、 Parse
或 TryParse
来转换它们。