Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3.  
  4. namespace UnEx_Sequences.Internal.Pools
  5. {
  6.     //На данный момент это самый быстрый алгоритм в последовательностях.
  7.     //С использованием текущего пула и последовательности SequenceEnumerable.
  8.     //Рассматривается только метод RunAll()
  9.     //2 математические операции увеличения числа на 1
  10.     //2 условные конструкции
  11.     //Общий итог: 4
  12.     internal class SequenceCollectionPool<TList> : ISequencePool, IEnumerable<ISequence>
  13.         where TList : IList<ISequence>, new()
  14.     {
  15.         public int Count => _sequences.Count;
  16.  
  17.         private readonly TList _sequences = new TList();
  18.  
  19.         private int _actualCount;
  20.  
  21.         public void Add(ISequence sequence)
  22.         {
  23.             _sequences.Add(sequence);
  24.  
  25.             _actualCount++;
  26.         }
  27.  
  28.         public IEnumerator<ISequence> GetEnumerator() => _sequences.GetEnumerator();
  29.  
  30.         public void Remove(ISequence sequence)
  31.         {
  32.             if (_sequences.Remove(sequence)) _actualCount--;
  33.         }
  34.  
  35.         public void RunAll()
  36.         {
  37.             for (int i = 0; i < _actualCount; i++) _sequences[i].Run();
  38.         }
  39.  
  40.         IEnumerator IEnumerable.GetEnumerator() => _sequences.GetEnumerator();
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement