gpt4 book ai didi

c# - Convert 类和转换控制台输入 C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:20 24 4
gpt4 key购买 nike

这个问题更像是“为什么我不能这样做/我做错了什么”,因为我已经设法完成了程序应该做的事情,但它引发了更多关于为什么某些事情会这样工作的问题.

对于初学者来说,这个项目的目标是从控制台窗口捕获单个字符(使用 Console.Read()/.ReadLine()),使用 Convert 类将其转换为字符串,然后将其写入控制台窗口。

我已经通过以下代码使我的项目具有此功能:

namespace ReadConvertWrite
{
class Program
{
static void Main(string[] args)
{

String input = Console.ReadLine();
try
{
Convert.ToInt32(input);
}
catch (Exception)
{

}
Console.WriteLine(input);
Console.ReadLine();
}
}
}

鉴于这似乎是一个毫无意义的练习,因为转换是不必要的,我想通过使用 .Read() 方法而不是 .ReadLine() 来使其成为必要。这引出了我的问题:

为什么 .Read() 总是打印输入到控制台的字符的十六进制值,尽管 MSDN 文档使它听起来像 .Read() 和 .ReadLine() 除了读取单个字符外工作方式相同与一行相比,除此之外,为什么我尝试过的 Convert 类方法(.ToInt、.ToString 等)都无法实际提供十六进制值以外的输出?

这是我到目前为止尝试过的:

namespace ReadConvertWrite
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine(Convert.ToString(Console.Read()));
Console.ReadLine();
Console.ReadLine();
}
}
}

和:

namespace ReadConvertWrite
{
class Program
{
static void Main(string[] args)
{
var input = 0;
input = Console.Read();
String InputString = Convert.ToString(input);
Console.ReadLine();
Console.ReadLine();
}
}
}

最佳答案

Console.Read 返回表示字符的整数。 Console.ReadLine 返回一个字符串。

当您执行 Console.WriteLine(Console.ReadLine()) 时,您只是在回应您的输入。当您执行 Console.WriteLine(Convert.ToString(Console.Read())) 时,您将获取字符的数值并将其打印为数字。

Convert.ToString(int) 不会将整数解释为字符 - 这会很荒谬。您希望 Convert.ToString(42) 打印 * 吗?您需要将整数转换为字符:

Console.WriteLine((char)Console.Read());

很可能,您无论如何都不想使用 Console.Read - 这是处理老式 CLI 的一个相当具体的事情,而不是对典型控制台程序非常有用的任何事情,除非您需要流式传输大量字符并希望避免不必要地分配巨大的字符串。

确保正确处理文件结尾 - Console.Read() 将在输入流结束时返回 -1,这不是有效值字符.

关于c# - Convert 类和转换控制台输入 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com