2016-03-05 6 views
4

Я столкнулся с проблемой со строковым конструктором, который я, похоже, не могу решить. Для упрощения задачи я создаю следующий метод:C# Stringbuilder повреждает содержимое при добавлении большого количества текста

private static string TestBigStrings() { 
    StringBuilder builder = new StringBuilder(); 

    for (int i = 1; i < 1500; i++) { 
    string line = "This is a line isn't too big but breaks when we add to many of it."; 
    builder.AppendLine(line); 
    } 

    return builder.ToString(); 
} 

Следует только добавить, что линия 1500 раз, а затем объединить его в строку и возвращают его. Однако вместо того, чтобы просто комбинировать его, он развращает контент. Где-то в середине результата вы найдете текст:

This is a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of ...s a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of it. 
This is a line isn't too big but breaks when we add to many of it. 

Проект представляет собой простую консоль. Я также попытался все другие решения, чтобы проверить, возможно ли это какой-то другой способ, как:

  • Запись текста в файл (тот же коррупция и обрывается рано)

  • Записав его к поток памяти и чтение, что (же коррупция)

  • Использование списка и присоединение, что (же коррупция)

  • Только с помощью + = на шнурке (такая же коррупция)

  • использованием String.Concat (же коррупция)

Все мои коллеги, я попросил работают в той же проблеме, так что это не должно быть ПК связаны между собой. Кто-нибудь знает, что здесь происходит?

+3

Невозможно воспроизвести его ... Дайте нам больше информации о том, какая версия .NET/VS/x86/x64 –

+0

@GeorgeVovos, потому что это невозможно, особенно на всех его коллегах ПК. – Sakura

+0

Я также запустил код, и проблема не была воспроизведена - .NET 4.5. – SashaDu

ответ

7

Это то, что вы испытываете?

text visualizer

Ну, это просто отладчик лежал к вам. Это сократит строки, которые слишком велики, чтобы избежать чрезмерного использования памяти.

Я написал эту строку в файл, с простым:

File.WriteAllText("BigString.txt", str); 

И угадайте, что: строка там, как и ожидалось, и это не поврежден каким-либо образом.

+0

Вот и все! Я действительно использовал отладчик. Не знаю, я пропустил это с тех пор Я на самом деле пытался написать файл, но, похоже, он работает. Спасибо! – JHotterbeekx