From msk, 2 Months ago, written in Plain Text.
Embed
  1.  class MyStack : ICollection, IEnumerable, IEnumerator
  2.     {
  3.         private object[] myArray = new object[0];
  4.         private int currentINDEX = 0, foreachIndex = 0;
  5.  
  6.         public object Pop()
  7.         {
  8.             object o = myArray[myArray.Length - 1];
  9.             Array.Resize(ref myArray, myArray.Length - 1);
  10.             currentINDEX--;
  11.             return o;
  12.  
  13.         }
  14.  
  15.         public void Push(object obj)
  16.         {
  17.             Array.Resize(ref myArray, myArray.Length + 1);
  18.             myArray[currentINDEX++] = obj;
  19.         }
  20.  
  21.         public int Count
  22.         {
  23.             get { return myArray.Length; }
  24.         }
  25.  
  26.         public object SyncRoot => throw new NotImplementedException();
  27.  
  28.         public bool IsSynchronized => throw new NotImplementedException();
  29.  
  30.         object IEnumerator.Current
  31.         {
  32.             get { return myArray[foreachIndex++]; }
  33.         }
  34.  
  35.         public void CopyTo(Array array2, int index)
  36.         {
  37.             for (int i = index; i < myArray.Length; i++)
  38.             {
  39.                 array2.SetValue(myArray[i], i - index);
  40.             }
  41.         }
  42.  
  43.         public IEnumerator GetEnumerator()
  44.         {
  45.             return this;
  46.         }
  47.  
  48.         public bool MoveNext()
  49.         {
  50.             if (myArray.Length - 1 == foreachIndex)
  51.             {
  52.                 return false;
  53.             }
  54.             return true;
  55.         }
  56.  
  57.         public void Reset()
  58.         {
  59.             foreachIndex = 0;
  60.         }
  61.     }
  62.