2009-12-17 2 views
2

가능한 중복 :
best way to clear contents of .NET’s StringBuilder개간하여 StringBuilder 개체의 현재 문자열

StringBuilder 내 현재 보유하고 무엇을 제거하는 빠르고 쉬운 방법이 있나요?

Clear() 메서드를 찾고 있지만 찾지 못했습니다. ;)

내가 그 라인을 따라

stringBuilderObject = "" 

또는 뭔가를 할 것

.

+0

@Your 코멘트를 할 것입니다 답변 : 나는 길이 = 0 생각 이전에 할당 된 메모리를 다시 사용할 가능성이 있으므로 문제가 있어서는 안됩니다. 이를 확인하려면 Length = 0을 사용하고 용량을 확인하십시오. 길이를 0으로 설정하기 전과 같아야합니다. 비슷한 크기의 문자열을 여러 개 만들면 좋습니다. –

+0

복제 http://stackoverflow.com/questions/1709471/best-way-to-clear-contents-of-nets-stringbuilder – duckworth

답변

6
stringBuilderObject.Remove(0, stringBuilderObject.Length) 
+0

이것은 내가 함께가는 결국이지만 길이 = 0. 갈 수 있습니다 그것은 메모리 문제가있을 것 같아요? – bobber205

+0

@ bobber205 : http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.remove.aspx에서 : "현재 메서드는 현재 인스턴스에서 지정된 문자 범위를 제거합니다. [... ] 현재 인스턴스의 문자열 값은 길이로 축약됩니다. 현재 인스턴스의 용량은 영향을받지 않습니다. " 따라서 메모리 문제는 StringBuilder.Length = 0을 통해이 메서드를 선택해도 영향을받지 않습니다. 메모리가 걱정된다면 StringBuilder.Capacity = some_small_number도 설정해야합니다. – Dathan

3
stringBuilderObject = new StringBuilder(); // Let the GC do its job 
+1

문자열 작성기 개체를 다시 할당하면 정상적인 문자열 성능을 사용하는 것만 큼 나쁠 수 있습니다. 현명한, 그 사용법과 이유에 따라. –

+4

그건 내 첫 번째 생각 이었어. 그러나 StringBuilder가 메서드의 인수로 전달되는 (드문 경우는 있지만) 경우는 어떻습니까? 귀하의 버전은 트릭을하지 않지만, stringBuilder.Remove (0, stringBuilder.Length)는 항상 작동합니다. – Dathan

+0

@Dathan, 좋은 관찰 –

1

이 그것을해야한다)

myStringBuilder = new StringBuilder(); 
+0

문자열 작성기 개체를 다시 할당하는 것은 정상적인 문자열 성능을 현명하게 사용하는 것만 큼 나쁠 수도 있습니다. 사용 방법과 사용 이유에 따라 다릅니다. –

13

이것은 JayZengs에서이

stringBuilderObject.Length = 0; 
+1

그 사실을 알지 못했습니다. 잘 했어. – expedient

+1

오, 나는 길이가 세터를 가졌다는 것을 결코 깨닫지 못했습니다. 좋은. – Dathan

1
stringBuilderObject.Remove(0,stringBuilderObject.Length) 
관련 문제