为什么 Console.ReadLine() 不能在 C# 中存储 int/double ?与 C++ 中的“cin >>”相反,它可以根据变量存储任何内容。
问问题
1030 次
4 回答
7
不同的语言、不同的库、不同的 API、不同的设计决策等。
cin.operator>>
传递了一个引用以用作输出参数,并且在此参数类型上重载。Console.ReadLine
返回一个值并且没有重载。
您可以为 like 编写自己的扩展方法,Console
例如,GetValue
传递一个 out 参数并在您希望的任意数量的类型上重载。
于 2014-07-22T22:32:11.673 回答
2
控制台本身就是文本输入。 Console.ReadLine()
(和其他方法)不为您进行解析,而是让您自己解析。
然而,这有一个优势,因为它可以更轻松地干净地处理错误情况(例如,如果您想读取双精度,并且用户键入“foo”)。
于 2014-07-22T22:28:21.207 回答
0
因为读取字符串更安全。当流的状态变得错误时,它可以防止诸如 C++ 中的错误数据之类的错误。
于 2014-07-22T22:34:34.190 回答
0
Console.ReadLine() 确实存储了字符串,因为它是这样构建的。但是,您可以检查您的输入并将转换为您想要的类型。
例如,您可以这样做:
string sen = Console.ReadLine();
int b;
int.TryParse(sen, out b);
Console.WriteLine(b);
您可以使用上面的代码获取输入,然后将结果作为 int 放入 b 中。例如,如果输入不是数字,则 b 将存储 0。
如果你想这样做来加倍,那么你应该做 double.TryParse 并将它放在一个 double 变量上。
于 2021-01-11T18:33:48.860 回答