无法在控制台中写入char

时间:2015-12-27 11:35:43

标签: c# char console.writeline

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

这是我的代码。

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
        }
    }
}

相反,我只看到“我的字符:”作为输出,而不是预期的“我的字符:5”。

3 个答案:

答案 0 :(得分:5)

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

当你有

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

你正在打印一个带有 5的字符,这是你问题的评论中指出的Enquiry character,而不是字符&#34 ; 5"

角色" 5"有ASCII value 53(十六进制为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);
}

答案 1 :(得分:4)

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

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

如果您注意到表格中的数字从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

答案 2 :(得分:0)

您无需将5转换为char,以下代码可以使用:

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