private HeadTail(IEnumerator <T> values) { this.head = values.Current; if (values.MoveNext()) { this.tail = new HeadTail <T> (values); } }
public IEnumerator <T> GetEnumerator() { HeadTail <T> current = this; do { yield return(current.Head); current = current.Tail; } while(current != null); }
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); } }
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); }
public HeadTail(T head, HeadTail <T> tail) { this.head = head; this.tail = tail; }