Beispiel #1
0
 private HeadTail(IEnumerator <T> values)
 {
     this.head = values.Current;
     if (values.MoveNext())
     {
         this.tail = new HeadTail <T> (values);
     }
 }
Beispiel #2
0
        public IEnumerator <T> GetEnumerator()
        {
            HeadTail <T> current = this;

            do
            {
                yield return(current.Head);

                current = current.Tail;
            } while(current != null);
        }
Beispiel #3
0
        public HeadTail(IEnumerable <T> values)
        {
            if (values == null)
            {
                throw new ArgumentException("The values must be effective.", "values");
            }
            IEnumerator <T> enumerator = values.GetEnumerator();

            if (enumerator == null)
            {
                throw new ArgumentException("Values produced a noneffective enumerator.", "values");
            }
            if (!enumerator.MoveNext())
            {
                throw new ArgumentException("Values must contain at least one element.", "values");
            }
            this.head = enumerator.Current;
            if (enumerator.MoveNext())
            {
                this.tail = new HeadTail <T> (enumerator);
            }
        }
Beispiel #4
0
 public override bool Equals(object obj)
 {
     if (base.Equals(obj))
     {
         return(true);
     }
     if (obj != null && obj is HeadTail <T> )
     {
         HeadTail <T> htobj = (HeadTail <T>)obj;
         if (!Object.Equals(this.head, htobj.head))
         {
             return(false);
         }
         if (this.tail != null)
         {
             return(this.tail.Equals(htobj.tail));
         }
         else
         {
             return(htobj.tail == null);
         }
     }
     return(false);
 }
Beispiel #5
0
 public HeadTail(T head, HeadTail <T> tail)
 {
     this.head = head;
     this.tail = tail;
 }