@@ -139,12 +139,7 @@ public sealed class BitArray : ICloneable, IEnumerator<bool>, IEnumerable<bool>
139139 /// <param name="n">length of the array.</param>
140140 public BitArray ( int n )
141141 {
142- if ( n < 1 )
143- {
144- field = new bool [ 0 ] ;
145- }
146-
147- field = new bool [ n ] ;
142+ field = n <= 0 ? new bool [ 0 ] : new bool [ n ] ;
148143 }
149144
150145 /// <summary>
@@ -332,40 +327,32 @@ public void Dispose()
332327 {
333328 var sequence1 = one . ToString ( ) ;
334329 var sequence2 = two . ToString ( ) ;
335- var result = string . Empty ;
336- var tmp = string . Empty ;
330+ var result = new StringBuilder ( ) ;
337331
338332 // for scaling of same length.
339333 if ( one . Length != two . Length )
340334 {
335+ var tmp = new StringBuilder ( ) ;
341336 int difference ;
342337 if ( one . Length > two . Length )
343338 {
344339 // one is greater
345340 difference = one . Length - two . Length ;
346341
347342 // fills up with 0's
348- for ( var i = 0 ; i < difference ; i ++ )
349- {
350- tmp += '0' ;
351- }
352-
353- tmp += two . ToString ( ) ;
354- sequence2 = tmp ;
343+ tmp . Append ( '0' , difference ) ;
344+ tmp . Append ( two . ToString ( ) ) ;
345+ sequence2 = tmp . ToString ( ) ;
355346 }
356347 else
357348 {
358349 // two is greater
359350 difference = two . Length - one . Length ;
360351
361352 // fills up with 0's
362- for ( var i = 0 ; i < difference ; i ++ )
363- {
364- tmp += '0' ;
365- }
366-
367- tmp += one . ToString ( ) ;
368- sequence1 = tmp ;
353+ tmp . Append ( '0' , difference ) ;
354+ tmp . Append ( one . ToString ( ) ) ;
355+ sequence1 = tmp . ToString ( ) ;
369356 }
370357 } // end scaling
371358
@@ -374,11 +361,10 @@ public void Dispose()
374361
375362 for ( var i = 0 ; i < len ; i ++ )
376363 {
377- result += sequence1 [ i ] . Equals ( '0' ) && sequence2 [ i ] . Equals ( '0' ) ? '0' : '1' ;
364+ result . Append ( sequence1 [ i ] . Equals ( '0' ) && sequence2 [ i ] . Equals ( '0' ) ? '0' : '1' ) ;
378365 }
379366
380- result = result . Trim ( ) ;
381- ans . Compile ( result ) ;
367+ ans . Compile ( result . ToString ( ) ) ;
382368
383369 return ans ;
384370 }
@@ -393,22 +379,14 @@ public void Dispose()
393379 {
394380 var ans = new BitArray ( one . Length ) ;
395381 var sequence = one . ToString ( ) ;
396- var result = string . Empty ;
382+ var result = new StringBuilder ( sequence . Length ) ;
397383
398384 foreach ( var ch in sequence )
399385 {
400- if ( ch == '1' )
401- {
402- result += '0' ;
403- }
404- else
405- {
406- result += '1' ;
407- }
386+ result . Append ( ch == '1' ? '0' : '1' ) ;
408387 }
409388
410- result = result . Trim ( ) ;
411- ans . Compile ( result ) ;
389+ ans . Compile ( result . ToString ( ) ) ;
412390
413391 return ans ;
414392 }
@@ -444,54 +422,45 @@ public void Dispose()
444422 {
445423 var sequence1 = one . ToString ( ) ;
446424 var sequence2 = two . ToString ( ) ;
447- var tmp = string . Empty ;
448425
449426 // for scaling of same length.
450427 if ( one . Length != two . Length )
451428 {
429+ var tmp = new StringBuilder ( ) ;
452430 int difference ;
453431 if ( one . Length > two . Length )
454432 {
455433 // one is greater
456434 difference = one . Length - two . Length ;
457435
458436 // fills up with 0's
459- for ( var i = 0 ; i < difference ; i ++ )
460- {
461- tmp += '0' ;
462- }
463-
464- tmp += two . ToString ( ) ;
465- sequence2 = tmp ;
437+ tmp . Append ( '0' , difference ) ;
438+ tmp . Append ( two . ToString ( ) ) ;
439+ sequence2 = tmp . ToString ( ) ;
466440 }
467441 else
468442 {
469443 // two is greater
470444 difference = two . Length - one . Length ;
471445
472446 // fills up with 0's
473- for ( var i = 0 ; i < difference ; i ++ )
474- {
475- tmp += '0' ;
476- }
477-
478- tmp += one . ToString ( ) ;
479- sequence1 = tmp ;
447+ tmp . Append ( '0' , difference ) ;
448+ tmp . Append ( one . ToString ( ) ) ;
449+ sequence1 = tmp . ToString ( ) ;
480450 }
481451 } // end scaling
482452
483453 var len = one . Length > two . Length ? one . Length : two . Length ;
484454 var ans = new BitArray ( len ) ;
485455
486- var sb = new StringBuilder ( ) ;
456+ var sb = new StringBuilder ( len ) ;
487457
488458 for ( var i = 0 ; i < len ; i ++ )
489459 {
490- _ = sb . Append ( sequence1 [ i ] == sequence2 [ i ] ? '0' : '1' ) ;
460+ sb . Append ( sequence1 [ i ] == sequence2 [ i ] ? '0' : '1' ) ;
491461 }
492462
493- var result = sb . ToString ( ) . Trim ( ) ;
494- ans . Compile ( result ) ;
463+ ans . Compile ( sb . ToString ( ) ) ;
495464
496465 return ans ;
497466 }
@@ -575,18 +544,10 @@ public void Compile(string sequence)
575544 ThrowIfSequenceIsInvalid ( sequence ) ;
576545
577546 // for appropriate scaling
578- var tmp = string . Empty ;
579547 if ( sequence . Length < field . Length )
580548 {
581549 var difference = field . Length - sequence . Length ;
582-
583- for ( var i = 0 ; i < difference ; i ++ )
584- {
585- tmp += '0' ;
586- }
587-
588- tmp += sequence ;
589- sequence = tmp ;
550+ sequence = new string ( '0' , difference ) + sequence ;
590551 }
591552
592553 // actual compile procedure.
@@ -603,8 +564,6 @@ public void Compile(string sequence)
603564 /// <param name="number">A positive integer number.</param>
604565 public void Compile ( int number )
605566 {
606- var tmp = string . Empty ;
607-
608567 // precondition I
609568 if ( number <= 0 )
610569 {
@@ -624,14 +583,7 @@ public void Compile(int number)
624583 if ( binaryNumber . Length < field . Length )
625584 {
626585 var difference = field . Length - binaryNumber . Length ;
627-
628- for ( var i = 0 ; i < difference ; i ++ )
629- {
630- tmp += '0' ;
631- }
632-
633- tmp += binaryNumber ;
634- binaryNumber = tmp ;
586+ binaryNumber = new string ( '0' , difference ) + binaryNumber ;
635587 }
636588
637589 // actual compile procedure.
@@ -648,8 +600,6 @@ public void Compile(int number)
648600 /// <param name="number">A positive long integer number.</param>
649601 public void Compile ( long number )
650602 {
651- var tmp = string . Empty ;
652-
653603 // precondition I
654604 if ( number <= 0 )
655605 {
@@ -669,14 +619,7 @@ public void Compile(long number)
669619 if ( binaryNumber . Length < field . Length )
670620 {
671621 var difference = field . Length - binaryNumber . Length ;
672-
673- for ( var i = 0 ; i < difference ; i ++ )
674- {
675- tmp += '0' ;
676- }
677-
678- tmp += binaryNumber ;
679- binaryNumber = tmp ;
622+ binaryNumber = new string ( '0' , difference ) + binaryNumber ;
680623 }
681624
682625 // actual compile procedure.
@@ -832,7 +775,7 @@ private static void ThrowIfSequenceIsInvalid(string sequence)
832775 }
833776
834777 /// <summary>
835- /// Utility method foir checking a given sequence contains only zeros and ones.
778+ /// Utility method for checking a given sequence contains only zeros and ones.
836779 /// This method will used in Constructor (sequence : string) and Compile(sequence : string).
837780 /// </summary>
838781 /// <param name="sequence">String sequence.</param>
0 commit comments