我试图使用C#6的新格式将简单数据类型的所有最小值和最大值输出到富文本框中。但是在它调用char.MinValue的地方它会停止输出字符串。
缩短以下代码以举例说明我遇到的问题。 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值。那么问题出在哪里?
答案 0 :(得分:3)
char.MinValue
和char.MaxValue
返回char
数据类型。这意味着char.MinValue
实际上是\0
,这是字符串终止符。 RichTextBox
理解它并且不会输出字符串的其余部分。
如果您在调试器中检查output
的值:
"decimal\t\tMin: -79228162514264337593543950335\n\t\tMax: 79228162514264337593543950335\nchar\t\tMin: \0 to Max: \uffff\n"