@@ -1603,7 +1603,7 @@ private bool EvaluateIndexing(string expr, string s, Stack<object> stack, ref in
16031603
16041604 if ( indexingBeginningMatch . Success )
16051605 {
1606- string innerExp = "" ;
1606+ StringBuilder innerExp = new StringBuilder ( ) ;
16071607 i += indexingBeginningMatch . Length ;
16081608 int bracketCount = 1 ;
16091609 for ( ; i < expr . Length ; i ++ )
@@ -1613,7 +1613,7 @@ private bool EvaluateIndexing(string expr, string s, Stack<object> stack, ref in
16131613 if ( internalStringMatch . Success )
16141614 {
16151615 string innerString = internalStringMatch . Value + GetCodeUntilEndOfString ( expr . Substring ( i + internalStringMatch . Length ) , internalStringMatch ) ;
1616- innerExp += innerString ;
1616+ innerExp . Append ( innerString ) ;
16171617 i += innerString . Length - 1 ;
16181618 }
16191619 else
@@ -1627,7 +1627,7 @@ private bool EvaluateIndexing(string expr, string s, Stack<object> stack, ref in
16271627 bracketCount -- ;
16281628 if ( bracketCount == 0 ) break ;
16291629 }
1630- innerExp += s ;
1630+ innerExp . Append ( s ) ;
16311631 }
16321632 }
16331633
@@ -1637,7 +1637,7 @@ private bool EvaluateIndexing(string expr, string s, Stack<object> stack, ref in
16371637 throw new Exception ( $ "{ bracketCount } ']' character { beVerb } missing in expression : [{ expr } ]") ;
16381638 }
16391639
1640- dynamic right = Evaluate ( innerExp ) ;
1640+ dynamic right = Evaluate ( innerExp . ToString ( ) ) ;
16411641 ExpressionOperator op = indexingBeginningMatch . Length == 2 ? ExpressionOperator . IndexingWithNullConditional : ExpressionOperator . Indexing ;
16421642 dynamic left = stack . Pop ( ) ;
16431643
@@ -1667,32 +1667,32 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
16671667
16681668 bool endOfString = false ;
16691669
1670- string resultString = string . Empty ;
1670+ StringBuilder resultString = new StringBuilder ( ) ;
16711671
16721672 while ( ! endOfString && i < expr . Length )
16731673 {
16741674 Match stringMatch = stringRegexPattern . Match ( expr . Substring ( i , expr . Length - i ) ) ;
16751675
1676- resultString += stringMatch . Value ;
1676+ resultString . Append ( stringMatch . Value ) ;
16771677 i += stringMatch . Length ;
16781678
16791679 if ( expr . Substring ( i ) [ 0 ] == '"' )
16801680 {
16811681 endOfString = true ;
1682- stack . Push ( resultString ) ;
1682+ stack . Push ( resultString . ToString ( ) ) ;
16831683 }
16841684 else if ( expr . Substring ( i ) [ 0 ] == '{' )
16851685 {
16861686 i ++ ;
16871687
16881688 if ( expr . Substring ( i ) [ 0 ] == '{' )
16891689 {
1690- resultString += @ "{";
1690+ resultString . Append ( "{" ) ;
16911691 i ++ ;
16921692 }
16931693 else
16941694 {
1695- string innerExp = "" ;
1695+ StringBuilder innerExp = new StringBuilder ( ) ;
16961696 int bracketCount = 1 ;
16971697 for ( ; i < expr . Length ; i ++ )
16981698 {
@@ -1701,7 +1701,7 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
17011701 if ( internalStringMatch . Success )
17021702 {
17031703 string innerString = internalStringMatch . Value + GetCodeUntilEndOfString ( expr . Substring ( i + internalStringMatch . Length ) , internalStringMatch ) ;
1704- innerExp += innerString ;
1704+ innerExp . Append ( innerString ) ;
17051705 i += innerString . Length - 1 ;
17061706 }
17071707 else
@@ -1716,7 +1716,7 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
17161716 i ++ ;
17171717 if ( bracketCount == 0 ) break ;
17181718 }
1719- innerExp += s ;
1719+ innerExp . Append ( s ) ;
17201720 }
17211721 }
17221722
@@ -1725,7 +1725,7 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
17251725 string beVerb = bracketCount == 1 ? "is" : "are" ;
17261726 throw new Exception ( $ "{ bracketCount } '}}' character { beVerb } missing in expression : [{ expr } ]") ;
17271727 }
1728- resultString += Evaluate ( innerExp ) . ToString ( ) ;
1728+ resultString . Append ( Evaluate ( innerExp . ToString ( ) ) ) ;
17291729 }
17301730 }
17311731 else if ( expr . Substring ( i , expr . Length - i ) [ 0 ] == '}' )
@@ -1734,7 +1734,7 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
17341734
17351735 if ( expr . Substring ( i , expr . Length - i ) [ 0 ] == '}' )
17361736 {
1737- resultString += @ "}";
1737+ resultString . Append ( "}" ) ;
17381738 i ++ ;
17391739 }
17401740 else
@@ -1748,7 +1748,7 @@ private bool EvaluateString(string expr, string s, string restOfExpression, Stac
17481748
17491749 if ( stringEscapedCharDict . TryGetValue ( expr . Substring ( i , expr . Length - i ) [ 0 ] , out string escapedString ) )
17501750 {
1751- resultString += escapedString ;
1751+ resultString . Append ( escapedString ) ;
17521752 i ++ ;
17531753 }
17541754 else
0 commit comments