public override string ToString() {
string returnString;
if ( ( length <= MaxStringBuilderLength ) || ( buffersCount == 1 && lastBufferIndex == 0 ) ) {
returnString = ( stringBuilder != null ) ? stringBuilder.ToString() : string.Empty;
}
else {
if ( stringBuilder == null ) {
stringBuilder = new StringBuilder( length );
}
else {
stringBuilder.Capacity = length;
}
int charsLeft = length - stringBuilder.Length;
for ( int i = 0; i < buffersCount - 1; i++ ) {
char[] buf = buffers[i].buffer;
stringBuilder.Append( buf, 0, buf.Length );
charsLeft -= buf.Length;
}
stringBuilder.Append( buffers[buffersCount-1].buffer, 0, charsLeft );
ClearBuffers();
returnString = stringBuilder.ToString();
}
#if BUFFER_BUILDER_TRACING
if ( s_TraceOutput != null ) {
s_TraceOutput.WriteLine( "BufferBuilder.ToString() Length == " + returnString.Length + "\t \"" + returnString + "\"" );
toStringCount++;
totalLength += returnString.Length;
if ( minLength > returnString.Length ) {
minLength = returnString.Length;
}
if ( maxLength < returnString.Length ) {
maxLength = returnString.Length;
}
}
#endif
return returnString;
}