@@ -139,12 +139,7 @@ public sealed class BitArray : ICloneable, IEnumerator<bool>, IEnumerable<bool>
139
139
/// <param name="n">length of the array.</param>
140
140
public BitArray ( int n )
141
141
{
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 ] ;
148
143
}
149
144
150
145
/// <summary>
@@ -332,40 +327,32 @@ public void Dispose()
332
327
{
333
328
var sequence1 = one . ToString ( ) ;
334
329
var sequence2 = two . ToString ( ) ;
335
- var result = string . Empty ;
336
- var tmp = string . Empty ;
330
+ var result = new StringBuilder ( ) ;
337
331
338
332
// for scaling of same length.
339
333
if ( one . Length != two . Length )
340
334
{
335
+ var tmp = new StringBuilder ( ) ;
341
336
int difference ;
342
337
if ( one . Length > two . Length )
343
338
{
344
339
// one is greater
345
340
difference = one . Length - two . Length ;
346
341
347
342
// 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 ( ) ;
355
346
}
356
347
else
357
348
{
358
349
// two is greater
359
350
difference = two . Length - one . Length ;
360
351
361
352
// 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 ( ) ;
369
356
}
370
357
} // end scaling
371
358
@@ -374,11 +361,10 @@ public void Dispose()
374
361
375
362
for ( var i = 0 ; i < len ; i ++ )
376
363
{
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' ) ;
378
365
}
379
366
380
- result = result . Trim ( ) ;
381
- ans . Compile ( result ) ;
367
+ ans . Compile ( result . ToString ( ) ) ;
382
368
383
369
return ans ;
384
370
}
@@ -393,22 +379,14 @@ public void Dispose()
393
379
{
394
380
var ans = new BitArray ( one . Length ) ;
395
381
var sequence = one . ToString ( ) ;
396
- var result = string . Empty ;
382
+ var result = new StringBuilder ( sequence . Length ) ;
397
383
398
384
foreach ( var ch in sequence )
399
385
{
400
- if ( ch == '1' )
401
- {
402
- result += '0' ;
403
- }
404
- else
405
- {
406
- result += '1' ;
407
- }
386
+ result . Append ( ch == '1' ? '0' : '1' ) ;
408
387
}
409
388
410
- result = result . Trim ( ) ;
411
- ans . Compile ( result ) ;
389
+ ans . Compile ( result . ToString ( ) ) ;
412
390
413
391
return ans ;
414
392
}
@@ -444,54 +422,45 @@ public void Dispose()
444
422
{
445
423
var sequence1 = one . ToString ( ) ;
446
424
var sequence2 = two . ToString ( ) ;
447
- var tmp = string . Empty ;
448
425
449
426
// for scaling of same length.
450
427
if ( one . Length != two . Length )
451
428
{
429
+ var tmp = new StringBuilder ( ) ;
452
430
int difference ;
453
431
if ( one . Length > two . Length )
454
432
{
455
433
// one is greater
456
434
difference = one . Length - two . Length ;
457
435
458
436
// 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 ( ) ;
466
440
}
467
441
else
468
442
{
469
443
// two is greater
470
444
difference = two . Length - one . Length ;
471
445
472
446
// 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 ( ) ;
480
450
}
481
451
} // end scaling
482
452
483
453
var len = one . Length > two . Length ? one . Length : two . Length ;
484
454
var ans = new BitArray ( len ) ;
485
455
486
- var sb = new StringBuilder ( ) ;
456
+ var sb = new StringBuilder ( len ) ;
487
457
488
458
for ( var i = 0 ; i < len ; i ++ )
489
459
{
490
- _ = sb . Append ( sequence1 [ i ] == sequence2 [ i ] ? '0' : '1' ) ;
460
+ sb . Append ( sequence1 [ i ] == sequence2 [ i ] ? '0' : '1' ) ;
491
461
}
492
462
493
- var result = sb . ToString ( ) . Trim ( ) ;
494
- ans . Compile ( result ) ;
463
+ ans . Compile ( sb . ToString ( ) ) ;
495
464
496
465
return ans ;
497
466
}
@@ -575,18 +544,10 @@ public void Compile(string sequence)
575
544
ThrowIfSequenceIsInvalid ( sequence ) ;
576
545
577
546
// for appropriate scaling
578
- var tmp = string . Empty ;
579
547
if ( sequence . Length < field . Length )
580
548
{
581
549
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 ;
590
551
}
591
552
592
553
// actual compile procedure.
@@ -603,8 +564,6 @@ public void Compile(string sequence)
603
564
/// <param name="number">A positive integer number.</param>
604
565
public void Compile ( int number )
605
566
{
606
- var tmp = string . Empty ;
607
-
608
567
// precondition I
609
568
if ( number <= 0 )
610
569
{
@@ -624,14 +583,7 @@ public void Compile(int number)
624
583
if ( binaryNumber . Length < field . Length )
625
584
{
626
585
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 ;
635
587
}
636
588
637
589
// actual compile procedure.
@@ -648,8 +600,6 @@ public void Compile(int number)
648
600
/// <param name="number">A positive long integer number.</param>
649
601
public void Compile ( long number )
650
602
{
651
- var tmp = string . Empty ;
652
-
653
603
// precondition I
654
604
if ( number <= 0 )
655
605
{
@@ -669,14 +619,7 @@ public void Compile(long number)
669
619
if ( binaryNumber . Length < field . Length )
670
620
{
671
621
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 ;
680
623
}
681
624
682
625
// actual compile procedure.
@@ -832,7 +775,7 @@ private static void ThrowIfSequenceIsInvalid(string sequence)
832
775
}
833
776
834
777
/// <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.
836
779
/// This method will used in Constructor (sequence : string) and Compile(sequence : string).
837
780
/// </summary>
838
781
/// <param name="sequence">String sequence.</param>
0 commit comments