Нулевой символ, удаляющий остаток вывода в 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
   }
}
Другие вопросы по тегам