예제 #1
0
 public void Run()
 {
     if (this.enumerator.MoveNext())
     {
         CountedSet <TValue> .Node current = this.enumerator.Current;
         if (current.Release())
         {
             this.s.totalRetains--;
             this.count++;
             this.Run();
             this.dict.Remove(current.v);
             this.s.nodeCount--;
             this.array[this.count--] = current.v;
         }
         else
         {
             this.s.totalRetains--;
         }
     }
     else
     {
         this.Dispose();
         if (this.count > 0)
         {
             this.array = new TValue[this.count];
         }
         this.count--;
     }
 }
예제 #2
0
 public void Run()
 {
     if (!this.enumerator.MoveNext())
     {
         this.Dispose();
         if (this.count > 0)
         {
             this.array = new TValue[this.count];
         }
         CountedSet <TValue> .ReleaseRecursor releaseRecursor = this;
         releaseRecursor.count = releaseRecursor.count - 1;
     }
     else
     {
         CountedSet <TValue> .Node current = this.enumerator.Current;
         if (!current.Release())
         {
             CountedSet <TValue> tValues = this.s;
             tValues.totalRetains = tValues.totalRetains - 1;
         }
         else
         {
             CountedSet <TValue> tValues1 = this.s;
             tValues1.totalRetains = tValues1.totalRetains - 1;
             CountedSet <TValue> .ReleaseRecursor releaseRecursor1 = this;
             releaseRecursor1.count = releaseRecursor1.count + 1;
             this.Run();
             this.dict.Remove(current.v);
             CountedSet <TValue> tValues2 = this.s;
             tValues2.nodeCount = tValues2.nodeCount - 1;
             TValue[] tValueArray = this.array;
             CountedSet <TValue> .ReleaseRecursor releaseRecursor2 = this;
             int num  = releaseRecursor2.count;
             int num1 = num;
             releaseRecursor2.count = num - 1;
             tValueArray[num1]      = current.v;
         }
     }
 }