无法在控制台中写入字符

Can't write char in console

我想在控制台写一个字符。

这是我的代码。

using System;

namespace bla
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            int d = 5;
            char e = (char)d;
            Console.WriteLine("my Char: " + e);
            Console.WriteLine("my Char: " + e.ToString ()); // also doesn't work
        }
    }
}

相反,我只看到 "my Char: " 作为输出,而不是预期的 "my Char: 5"。

您希望 char e = '5'; 将“5”打印到控制台。

当你有

int d = 5;
char e = (char)d;

您正在打印一个 5 的字符,这是您问题的评论中指出的 Enquiry character,而不是 字符 "5".

字符“5”有 ASCII value53(0x35 十六进制 - 在 ASCII 中 0x30 是“0”,0x39 是“9”,并且其他数字是 0x3{d},其中 {d} 是数字);您也可以修改您的代码以通过这种方式打印“5”:

char e = 0x35;

请注意,您无需在此处投射。但是如果你想要int转换为char,你可以使用

int d = 0x35;
char e = (char)d;

您可以自己检查,方法如下

char e = 0x35;
char f = '5';
bool check = e == f; // true

如果您希望打印的字符有所不同,您可以改为执行类似

的操作
private void printNumberToConsole(int number)
{
    if ( number < 0 || number > 9 )
        throw new ArgumentException("'number' must be between 0 and 9");

    char e = '0' + (char)number; // '0' == 0x30

    Console.WriteLine("my Char: " + e);
}

将 5 转换为 char 会得到此 ASCII table 中的第 5 个值。

它在控制台中没有显示任何内容,因为它不是 printable 字符。

如果您注意到 table 中的数字从 48(即数字 0)到 57(即数字 9)开始。

所以你必须这样做。

int d = 5;
char e = (char)(d + 48);
Console.WriteLine("my Char: " + e);
Console.WriteLine("my Char: " + (char)(5 + '0')); // or

您不需要将 5 转换为 char,以下代码将起作用:

int d = 5;
Console.WriteLine("my Char: " + d.ToString ());