如何 Convert.ToInt32(Console.ReadLine());工作?
How does Convert.ToInt32(Console.ReadLine()); work?
我是 C# 编程的新手,我目前正在做一个看起来像这样的练习:
- 读取用户的名字和姓氏并将其保存在变量中
- 欢迎用户
- 询问用户他们今年的年龄,并将其保存在具有适当数据类型的变量中
- 根据指定的年龄(年龄乘以 365)计算此人以前生活的天数并显示。
所以我的代码工作正常,但如果有人能解释转换的事情,我将不胜感激。我进行了大量 google 搜索和阅读,但我似乎无法理解它是如何工作的。
int age = Convert.ToInt32(Console.ReadLine());
有人可以为我的代码分解这个吗?
谢谢!
Console.Title = "Programming in C # - Exercise 1";
// Here the system asks the user to enter their full name.
Console.WriteLine("System: Enter your full name: ");
// Here I declare a variable and assign it a value.
string name = Console.ReadLine();
// Here the system welcomes the user.
Console.WriteLine("System: Welcome " + name + "!");
// Here the system asks how old the user is.
Console.WriteLine("System: How old are you?");
// This is the part i would like to have explained for me.
int age = Convert.ToInt32(Console.ReadLine());
// Here I declare a variable and calculate age in days.
int ageInDays = age * 365;
// Here the system answers.
Console.WriteLine("System: " + age + "?!" + " That means you are " + ageInDays + " days old!");
// Waiting to close the program.
Console.ReadLine();
你从控制台读取一行,然后将其转换为一个32位整数,然后存储在变量age中。
但是这很危险,因为您没有检查用户是否输入了任何非数字字符。如果用户输入“Foo”,您的应用程序会做什么?在您的应用程序中,这似乎不是什么大问题,但请注意先检查输入,然后在输入有效时继续。
Console.ReadLine
以字符串数据类型的形式从控制台读取输入。这是一种数据类型,用非常非常基本的术语来说,它代表文本。在引擎盖下,每个字符都由一个代码表示。您以前可能听说过其中一些编码术语,例如 ASCII 或 UTF。例如,ASCII 中的 A
由数字 65
表示。数字也是如此。 ASCII码48
表示数字0
.
我们有时需要将数字的字符串表示形式转换为其实际数值。通常用于执行数学运算等。为此,我们需要将“在 ASCII 中表示为 48 的 0”转换为文字 0。这是由 Convert.ToInt32
完成的,正如您所做的那样。它读取字符串,然后说“哦,我是 0 的文本表示,因此我将输出数字 0”。
所以在一个非常简短的总结中,它采用数字的文本表示并将数据更改为文字数值。
C# 中的 Console.Realine() 为您提供字符串输出..
所以为了转换成数值...转换函数会很有用..
尽管您现在已经有所了解,但我想指出 developers/coders 应该始终预料到意外情况,例如用户输入了错误的类型,例如年龄不能转换为整数的值或名称的大小写,他们只需按回车键而不输入名称。
因此,在这种情况下要检查输入的名称,请使用 string.IsNullOrWhiteSpace. For integer type, consider using int.TryParse。
关于连接字符串值或字符串值,例如考虑使用整数进行字符串插值,这可能是编码人员的偏好,因为有些人会喜欢将 someString + anotherString 串起来,或者如果仅使用字符串,则有 String.Concat and StringBuilder Class。
以下是您的代码的略微修改版本。由于您刚刚起步,请将其收起以备后用,或者考虑从中吸取教训。
using System;
namespace Exercise1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Programming in C # - Exercise 1";
Console.WriteLine("System: Enter your full name: ");
string fullName = Console.ReadLine();
/*
* Never assume a value for name has been entered
* https://docs.microsoft.com/en-us/dotnet/api/system.string.isnullorwhitespace?view=net-5.0
*/
if (!string.IsNullOrWhiteSpace(fullName))
{
/*
* Note original code concatenated name variable with text, you can also use string interpolation
* https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
*/
Console.WriteLine($"System: Welcome {fullName}!");
}
else
{
Console.WriteLine("System: Welcome no name given!");
}
Console.WriteLine("System: How old are you?");
string ageInput = Console.ReadLine();
/*
* int.TryParse, better than Convert.ToInt32 which is recommended in the remark section
* for documentation for Convert.ToInt32.
*
* https://docs.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=net-5.0
*
*/
if (int.TryParse(ageInput, out var age))
{
int ageInDays = age * 365;
/*
* Note original code concatenated name variable with text, you can also use string interpolation
* https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
*/
Console.WriteLine($"System: {age}?! That means you are {ageInDays} days old!");
}
else
{
Console.WriteLine("No age provided or the value was not a valid integer");
}
Console.WriteLine("Press any key to close this program");
Console.ReadLine();
}
}
}
我是 C# 编程的新手,我目前正在做一个看起来像这样的练习:
- 读取用户的名字和姓氏并将其保存在变量中
- 欢迎用户
- 询问用户他们今年的年龄,并将其保存在具有适当数据类型的变量中
- 根据指定的年龄(年龄乘以 365)计算此人以前生活的天数并显示。
所以我的代码工作正常,但如果有人能解释转换的事情,我将不胜感激。我进行了大量 google 搜索和阅读,但我似乎无法理解它是如何工作的。
int age = Convert.ToInt32(Console.ReadLine());
有人可以为我的代码分解这个吗?
谢谢!
Console.Title = "Programming in C # - Exercise 1";
// Here the system asks the user to enter their full name.
Console.WriteLine("System: Enter your full name: ");
// Here I declare a variable and assign it a value.
string name = Console.ReadLine();
// Here the system welcomes the user.
Console.WriteLine("System: Welcome " + name + "!");
// Here the system asks how old the user is.
Console.WriteLine("System: How old are you?");
// This is the part i would like to have explained for me.
int age = Convert.ToInt32(Console.ReadLine());
// Here I declare a variable and calculate age in days.
int ageInDays = age * 365;
// Here the system answers.
Console.WriteLine("System: " + age + "?!" + " That means you are " + ageInDays + " days old!");
// Waiting to close the program.
Console.ReadLine();
你从控制台读取一行,然后将其转换为一个32位整数,然后存储在变量age中。
但是这很危险,因为您没有检查用户是否输入了任何非数字字符。如果用户输入“Foo”,您的应用程序会做什么?在您的应用程序中,这似乎不是什么大问题,但请注意先检查输入,然后在输入有效时继续。
Console.ReadLine
以字符串数据类型的形式从控制台读取输入。这是一种数据类型,用非常非常基本的术语来说,它代表文本。在引擎盖下,每个字符都由一个代码表示。您以前可能听说过其中一些编码术语,例如 ASCII 或 UTF。例如,ASCII 中的 A
由数字 65
表示。数字也是如此。 ASCII码48
表示数字0
.
我们有时需要将数字的字符串表示形式转换为其实际数值。通常用于执行数学运算等。为此,我们需要将“在 ASCII 中表示为 48 的 0”转换为文字 0。这是由 Convert.ToInt32
完成的,正如您所做的那样。它读取字符串,然后说“哦,我是 0 的文本表示,因此我将输出数字 0”。
所以在一个非常简短的总结中,它采用数字的文本表示并将数据更改为文字数值。
Console.Realine() 为您提供字符串输出..
所以为了转换成数值...转换函数会很有用..
尽管您现在已经有所了解,但我想指出 developers/coders 应该始终预料到意外情况,例如用户输入了错误的类型,例如年龄不能转换为整数的值或名称的大小写,他们只需按回车键而不输入名称。
因此,在这种情况下要检查输入的名称,请使用 string.IsNullOrWhiteSpace. For integer type, consider using int.TryParse。
关于连接字符串值或字符串值,例如考虑使用整数进行字符串插值,这可能是编码人员的偏好,因为有些人会喜欢将 someString + anotherString 串起来,或者如果仅使用字符串,则有 String.Concat and StringBuilder Class。
以下是您的代码的略微修改版本。由于您刚刚起步,请将其收起以备后用,或者考虑从中吸取教训。
using System;
namespace Exercise1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Programming in C # - Exercise 1";
Console.WriteLine("System: Enter your full name: ");
string fullName = Console.ReadLine();
/*
* Never assume a value for name has been entered
* https://docs.microsoft.com/en-us/dotnet/api/system.string.isnullorwhitespace?view=net-5.0
*/
if (!string.IsNullOrWhiteSpace(fullName))
{
/*
* Note original code concatenated name variable with text, you can also use string interpolation
* https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
*/
Console.WriteLine($"System: Welcome {fullName}!");
}
else
{
Console.WriteLine("System: Welcome no name given!");
}
Console.WriteLine("System: How old are you?");
string ageInput = Console.ReadLine();
/*
* int.TryParse, better than Convert.ToInt32 which is recommended in the remark section
* for documentation for Convert.ToInt32.
*
* https://docs.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=net-5.0
*
*/
if (int.TryParse(ageInput, out var age))
{
int ageInDays = age * 365;
/*
* Note original code concatenated name variable with text, you can also use string interpolation
* https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
*/
Console.WriteLine($"System: {age}?! That means you are {ageInDays} days old!");
}
else
{
Console.WriteLine("No age provided or the value was not a valid integer");
}
Console.WriteLine("Press any key to close this program");
Console.ReadLine();
}
}
}