Нулевой символ, удаляющий остаток вывода в TextBox и RichTextBox
Я столкнулся с этой раздражающей особенностью / ошибкой. Предположим, у меня есть строка с конечными пробелами, как показано ниже:
string value = "someValue ";
Количество мест может варьироваться. Поэтому я пытаюсь показать это в TextBox
заключенный в начало и конец теги, чтобы увидеть, как он меняется, и он работает отлично.
textBox1.Text = $"BEGIN#{value}#END";
Но устройство, которое отправляет мне это значение, любит добавлять \0
нулевой символ в конце, как это:
string value = "someValue " + Convert.ToChar(0x00);
и когда я пытаюсь отобразить его тем же методом:
textBox1.Text = $"BEGIN#{value}#END;
это приводит к исчезновению #END
тег. Такое же явление происходит в RichTextBox
,
Вопрос: почему нулевой символ убивает / съедает остальную часть строки? Это как в C или C++, что он интерпретируется как конец массива char в строке?
1 ответ
В некоторых языках, таких как C и C++, нулевой символ указывает на конец строки. В.NET Framework пустой символ может быть встроен в строку. Когда строка содержит один или несколько нулевых символов, они включаются в длину всей строки. Например, в следующей строке подстроки "abc" и "def" разделены нулевым символом. Свойство Length возвращает 7, что указывает на то, что оно включает шесть буквенных символов, а также нулевой символ.
using System;
using System.Text;
public class StringClassTest
{
public static void Main()
{
string characters = "abc\u0000def";
Console.WriteLine(characters.Length); // Displays 7
}
}