@@ -544,7 +544,7 @@ public Uri ToUri()
544544 /// </returns>
545545 public override string ToString ( )
546546 {
547- var builder = new StringBuilder ( ) ;
547+ var builder = StringBuilderCache . Acquire ( 150 ) ;
548548
549549 if ( ! string . IsNullOrWhiteSpace ( _scheme ) )
550550 builder . Append ( _scheme ) . Append ( _schemeDelimiter ) ;
@@ -553,16 +553,16 @@ public override string ToString()
553553 {
554554 builder . Append ( _username ) ;
555555 if ( ! string . IsNullOrWhiteSpace ( _password ) )
556- builder . Append ( ":" ) . Append ( _password ) ;
556+ builder . Append ( ':' ) . Append ( _password ) ;
557557
558- builder . Append ( "@" ) ;
558+ builder . Append ( '@' ) ;
559559 }
560560
561561 if ( ! string . IsNullOrWhiteSpace ( _host ) )
562562 {
563563 builder . Append ( _host ) ;
564564 if ( _port . HasValue && ! IsStandardPort ( ) )
565- builder . Append ( ":" ) . Append ( _port ) ;
565+ builder . Append ( ':' ) . Append ( _port ) ;
566566 }
567567
568568 WritePath ( builder ) ;
@@ -571,7 +571,7 @@ public override string ToString()
571571 if ( ! string . IsNullOrWhiteSpace ( _fragment ) )
572572 builder . Append ( _fragment ) ;
573573
574- return builder . ToString ( ) ;
574+ return StringBuilderCache . ToString ( builder ) ;
575575 }
576576
577577
@@ -586,20 +586,19 @@ private bool IsStandardPort()
586586
587587 private void WritePath ( StringBuilder builder )
588588 {
589- builder . Append ( "/" ) ;
589+ builder . Append ( '/' ) ;
590590 if ( Path == null || Path . Count == 0 )
591591 return ;
592592
593593 int start = builder . Length ;
594594 foreach ( var p in Path )
595595 {
596596 if ( builder . Length > start )
597- builder . Append ( "/" ) ;
597+ builder . Append ( '/' ) ;
598598
599- var s = p . Replace ( " " , "+" ) ;
600- s = Uri . EscapeUriString ( s ) ;
599+ var v = Uri . EscapeDataString ( p ) ;
601600
602- builder . Append ( s ) ;
601+ builder . Append ( v ) ;
603602 }
604603 }
605604
@@ -608,29 +607,27 @@ private void WriteQueryString(StringBuilder builder)
608607 if ( Query == null || Query . Count == 0 )
609608 return ;
610609
611- builder . Append ( "?" ) ;
610+ builder . Append ( '?' ) ;
612611
613612 int start = builder . Length ;
614613 foreach ( var pair in Query )
615614 {
616615 var key = pair . Key ;
617616 key = Uri . EscapeDataString ( key ) ;
618- key = key . Replace ( "%20" , "+" ) ;
619617
620618 var values = pair . Value . ToList ( ) ;
621619
622620 foreach ( var value in values )
623621 {
624622 if ( builder . Length > start )
625- builder . Append ( "&" ) ;
623+ builder . Append ( '&' ) ;
626624
627625 var v = value ;
628626 v = Uri . EscapeDataString ( v ) ;
629- v = v . Replace ( "%20" , "+" ) ;
630627
631628 builder
632629 . Append ( key )
633- . Append ( "=" )
630+ . Append ( '=' )
634631 . Append ( v ) ;
635632 }
636633 }
@@ -763,6 +760,3 @@ private void ParsePath(string s)
763760 }
764761
765762}
766-
767-
768-
0 commit comments