为什么在C#Console.ReadLine()只存储字符串?

时间:2014-07-22 22:24:08

标签: c# console.readline

为什么Console.ReadLine()不能在C#中存储int / double?与“cin>>”相反在C ++中,可以根据变量存储任何内容。

4 个答案:

答案 0 :(得分:7)

不同的语言,不同的库,不同的API,不同的设计决策等。

cin.operator>>传递一个引用以使用out参数,并且它在此参数类型上重载。 Console.ReadLine 返回一个值,但不会超载。

您可以为Console编写自己的扩展方法,例如GetValue,它会传递一个out参数,并根据您的需要重载多种类型。

答案 1 :(得分:2)

本机控制台只是文本输入。 Console.ReadLine()(以及其他方法)不会为您解析,而是让您自己解析。

这样做有一个优点,因为它可以更容易地干净地处理错误情况(例如,如果你想读取一个double,用户输入" foo")。 / p>

答案 2 :(得分:0)

因为读取字符串更安全。它可以防止诸如C ++中的错误数据之类的错误,因此流的状态就是错误的。

答案 3 :(得分:0)

Console.ReadLine() 确实存储字符串,因为它是这样构建的。 但是,您可以检查您的输入并转换为您想要的类型。

例如,你可以这样做:

string sen = Console.ReadLine();
int b;
int.TryParse(sen, out b);
Console.WriteLine(b);

您可以使用上面的代码获取输入,然后将结果作为 int 放入 b。 例如,如果输入不是数字,则 b 将存储 0。

如果你想让它加倍,那么你应该做 double.TryParse 并将它放在一个 double 变量上。