C# CSharp中的解析-如何理解它

C# CSharp中的解析-如何理解它,c#,parsing,C#,Parsing,就在几天前,我开始学习C#,而我在理解基础知识方面已经遇到了一个问题。。也许只是语言障碍(我不是英语母语)。请你给我解释一下如何理解语法分析好吗?例如:在创建一个非常简单的计算器时,我想读取第一个输入数字(它是一个变量a)。我使用以下代码: float a=float.Parse(Console.ReadLine()); 对于其他号码,与b相同: float b=float.Parse(Console.ReadLine()); 我了解到,float是小数的数据类型,那么这个特殊的Parse(

就在几天前,我开始学习C#,而我在理解基础知识方面已经遇到了一个问题。。也许只是语言障碍(我不是英语母语)。请你给我解释一下如何理解语法分析好吗?例如:在创建一个非常简单的计算器时,我想读取第一个输入数字(它是一个变量
a
)。我使用以下代码:

float a=float.Parse(Console.ReadLine());
对于其他号码,与
b
相同:

float b=float.Parse(Console.ReadLine());
我了解到,
float
是小数的数据类型,那么这个特殊的
Parse()
代表什么呢

显然,我试图在不解析的情况下运行应用程序,但它无法工作,因为它将其读取为字符串,但为什么?谢谢。

读取用户输入的文本并将其返回到程序,以便您可以随心所欲地使用它。因此,ReadLine方法返回一个

如果要使用十进制数(请选中而不是),则需要将字符串(一个字符序列)转换为所需类型的数字,这就是其中的原因:

Parse接受一个字符串,如果可能,返回一个浮点值


几乎每种类型都包含用于将字符串转换为调用字符串的解析方法。

Console.ReadLine()
返回表示一段文本的
字符串。因此,从计算机的角度来看,调用
Console.ReadLine()
后所得到的是一段文本。它可能包含也可能不包含文本“6.0”,但从计算机的角度来看,它只是一段文本。因此,您不能使用它进行加法、减法等


使用
float.Parse(…)
方法,你告诉计算机:“这段文本实际上代表一个浮点数,你能读懂文本并给我一个数字,这样我就可以开始用它做数学计算了吗?”

你正在使用的方法,
float.Parse()
只是许多此类方法中的一种,这些方法采用
字符串
输入值,并尝试将其转换为目标类型,这里是
浮点

然而,还有一种更安全的选择,那就是
TryParse()


在这两种情况下,您都要求框架检查您提供的值,并尝试转换为请求的类型。此主题可能非常深入,因此您需要查阅详细信息。

a
是一个
浮点值
ReadLine()
生成一个
字符串
。需要转换。“我知道浮点是小数的数据类型”-不,浮点是完全不同的。试试这个:
float a=0.1,b=0.2,c=0.3a+b==c
,则编码>并进行比较。结果会让你吃惊。@user3477950-
float
double
decimal
都是浮点类型,不是“完全”不同,只是略有不同。@Henkholtman差异根本不是边际的。二进制和十进制浮点格式在表示十进制小数时表现不同。也就是说,十进制格式可以做到这一点,而二进制格式不行。这绝不是“边缘的”。@user3477950——对于询问
float.Parse()
的人来说,它们是无法区分的。您的受众很重要。“几乎每种类型都包含用于将另一种类型的值转换为调用值的解析方法。”——“解析”总是指从字符串转换,而不是任何其他类型的值。@Rotem您完全正确,我相应地修改了我的答案。
float a;
if (float.TryParse(Console.ReadLine(), out a))
{
    //do something with your new float 'a'
}