C#6 - char.MinValue()。ToString()不输出到富文本框

时间:2015-05-16 11:28:12

标签: c#

我试图使用C#6的新格式将简单数据类型的所有最小值和最大值输出到富文本框中。但是在它调用char.MinValue的地方它会停止输出字符串。

Output

缩短以下代码以举例说明我遇到的问题。 MaxChar()没有问题但是我把MinChar()放在任何地方退出输出。我在尝试调试时没有看到任何错误,并且当我使用断点查看局部变量时,该方法将连接所有内容。所以我认为它可能与富文本框有关,但我找不到任何能让我理解为什么会发生这种情况的东西。

    public Form1()
    {
        InitializeComponent();
        richTextBox1.Text = setTextBox();
    }

    private string setTextBox()
    {
        String output = "";

        // decimal
        output += "decimal\t" +
                $"\tMin: " + MinDecimal() + "\n" +
                $"\t\tMax: " + MaxDecimal() + "\n";
        // char
        output += "char\t" +
                $"\tMin: " + MinChar() + " to " +
                $"Max: " + MaxChar() + "\n";

        return output;
    }

    public string MinChar()
    {
        return $"{char.MinValue.ToString()}";
    }

    public string MaxChar()
    {
        return $"{char.MaxValue.ToString()}";
    }

我现在让它在调用ToString()之前将我的char.MinValue转换为int((int)char.MinValue),这样可以正常工作,但当然它正在输出char的int值。那么问题出在哪里?

1 个答案:

答案 0 :(得分:3)

char.MinValuechar.MaxValue返回char数据类型。这意味着char.MinValue实际上是\0,这是字符串终止符。 RichTextBox理解它并且不会输出字符串的其余部分。

如果您在调试器中检查output的值:

,则可以看到
"decimal\t\tMin: -79228162514264337593543950335\n\t\tMax: 79228162514264337593543950335\nchar\t\tMin: \0 to Max: \uffff\n"