StringBuilder.ToString() добавляет символы '\' в начало и конец строки

StringBuilder.ToString() добавляет символы '\' в начало и конец строки.

Почему это?

Перед вызовом .ToString() в строке нет символа '\'.


person Blankman    schedule 23.08.2010    source источник
comment
Пожалуйста, поместите код здесь, чтобы мы могли видеть.   -  person Preet Sangha    schedule 24.08.2010
comment
-1 После 790 вопросов можно подумать, что вы будете задавать меньше элементарных вопросов или, по крайней мере, писать лучше. Или даже научиться проверять орфографию.   -  person John Kugelman    schedule 24.08.2010
comment
Редакторы неплохо справляются с тем, чтобы брать ужасные вопросы и превращать их в приемлемые вопросы, так что нет особых стимулов для улучшения.   -  person mqp    schedule 24.08.2010
comment
Да, и удивительно, как много редакторов делают это, учитывая, что вопросы редактирования не приносят никакой репутации.   -  person Timwi    schedule 24.08.2010
comment
Конечно, вопрос можно было бы сформулировать лучше, но он далеко не заслуживает отрицательных или отрицательных голосов. И это также реальный вопрос, что до сих пор доказано довольно хорошими ответчиками.   -  person Dirk Vollmar    schedule 24.08.2010
comment
+1 - Хотя вы могли бы добавить немного больше информации, это все еще актуальный вопрос, и его трудно понять, если вы не знакомы с отладчиком.   -  person Jamie Keeling    schedule 24.08.2010
comment
Возможно, это хороший вопрос, но мы на самом деле не знаем. Возможно, здесь ответы на неправильный хороший вопрос.   -  person Jon Hanna    schedule 24.08.2010
comment
connect.microsoft. com/VisualStudio/feedback/details/594160/   -  person Timwi    schedule 03.09.2010


Ответы (3)


Вы думаете об этих обратных косых чертах здесь?

Пример снимка экрана с обратной косой чертой в окне просмотра

Если это так, вы неправильно читаете вывод: обратной косой черты на самом деле нет в строке. Они отображаются здесь только для того, чтобы сделать представление действительным в соответствии с синтаксисом C#. Если бы вы выводили строку, используя, например, Console.WriteLine, в ней не было бы обратной косой черты.

Честно говоря, это несовместимо. В представлении отладки для StringBuilder нет обратной косой черты, но в представлении для строк есть.

person Timwi    schedule 23.08.2010
comment
Это из-за цитаты, которую вы добавили. \ на самом деле не присутствует в строке te. Это просто визуализация отладчика. Нажмите на лупу, и вы увидите настоящий текст в построителе строк! - person Scordo; 24.08.2010
comment
@Kirk Woll: Теперь с тенью! :-Д - person Timwi; 24.08.2010
comment
Эй, флаггеры, Ганс пошутил, теперь вы можете перестать помечать его комментарий. - person ; 24.08.2010
comment
@Timwi Это оскорбительно? Вы знаете, на самом деле он не минусовал. Нажмите на свой подсчет голосов, и вы увидите это. - person ; 25.08.2010

StringBuilder не добавляет никаких символов, кроме тех, которые у вас есть добавлено. Возможно, вы просматриваете представление отладки строки, созданной компоновщиком строк, и символы, которые может потребоваться экранирование с обратной косой чертой (\) перед ними для удобства копирования вывода отладки.

Символы \ на самом деле не находятся в самих строковых данных, а являются частью отображения строки.

Изменить: вот тест, который вы можете запустить

private static void TestStringBuilder()
{
    StringBuilder builder = new StringBuilder();
    builder.Append(@"""saoetuhasoethuasteuhasoetnuh""");
    foreach (char c in builder.ToString())
    {
        System.Diagnostics.Debug.Assert(c != '\\', "EPIC STRINGBUILDER FAIL");
    }
}
person user7116    schedule 23.08.2010

Какой текст у вас есть в StringBuilder?

Следующий код просто выводит для меня "привет"

var sb = new StringBuilder();
sb.Append("hello");
var test = sb.ToString();
Console.WriteLine(test);

Я что-то упускаю?

person Jason Quinn    schedule 23.08.2010
comment
На самом деле это не ответ, поскольку вы звучите очень неуверенно, а также вопрос просто неверен в его текущем состоянии. - person Dykam; 24.08.2010
comment
@Dykam: я думаю, что это полезный ответ. Он обеспечивает ОП правильно работающим образцом. - person Dirk Vollmar; 24.08.2010
comment
@Dykam, это может быть потому, что я не получаю того же результата, что и человек, задавший вопрос, и он не дал мне многого, чтобы продолжить. - person Jason Quinn; 24.08.2010
comment
Совершенно верно, но ИМО это немного похоже на комментарий. - person Dykam; 24.08.2010