2015-05-16 1 views
0

Я пытался вывести все минимальные и максимальные значения простых типов данных с использованием нового форматирования C# 6 в текстовое поле с расширенными возможностями. Но там, где он вызывает char.MinValue, он останавливает вывод строки.C# 6 - char.MinValue(). ToString() не выводит в текстовое поле с расширенными возможностями

Output

Следующий код укорачивается, чтобы дать пример и показать только проблема у меня. MaxChar() не вызывает проблем, но где-то я помещаю MinChar() вывод строки quits. Я не вижу ошибок при попытке отладки, и метод конкатенирует все, когда я смотрю на локальные переменные, используя точки останова. Поэтому я думал, что это может быть связано с богатым текстовым полем, но я не могу найти ничего, что заставило бы меня понять, почему это происходит.

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()}"; 
    } 

настоящее время у меня это кастинг мой char.MinValue к междунар ((INT) char.MinValue) перед вызовом ToString(), и это работает очень хорошо, но, конечно, это выводит ИНТ значение полукокса , Так где же проблема?

ответ

3

char.MinValue и char.MaxValue return a char Тип данных. Это означает, что char.MinValue фактически является \0, который является символом символа строки. RichTextBox понимает это как таковое и не выводит оставшуюся часть строки.

Вы можете видеть, что если вы проверить значение output в отладчике:

"decimal\t\tMin: -79228162514264337593543950335\n\t\tMax: 79228162514264337593543950335\nchar\t\tMin: \0 to Max: \uffff\n" 
+1

Важно отметить, что это * родной * строка символов терминатор. .NET не имеет проблем со строками, содержащими нулевые символы. – usr

+0

@usr у него есть. Раньше я встречал такую ​​же проблему. Строка .NET может содержать \ 0 в середине строки, но усекать при отображении – Sakura

+0

Спасибо, ребята. Я подумал, что это что-то вроде этого, и я попытался сбежать от него, прежде чем проверять эту теорию, так как я не могу прямо заявить об этом. Но с этой информацией я нашел удобный метод dandy, который выводит литералы. – NewbornNerd

Смежные вопросы