public override T TryGetNext(out bool success) { switch (_state) { case 1: _enumerator = _source.GetEnumerator(); _state = 2; goto case 2; case 2: while (true) { var item = _enumerator.TryGetNext(out success); if (!success) { break; } if (_predicate(item)) { return(item); } } break; } success = false; return(default(T)); }
public long IFastEnumerator() { IFastEnumerator <int> ife = _array.GetFastEnumerator(); long total = 0; bool remaining = true; ife.Reset(); loop: var i = ife.TryGetNext(out remaining); if (remaining) { total += i; goto loop; } return(total); }
public override R TryGetNext(out bool success) { switch (_state) { case 1: _enumerator = _source.GetEnumerator(); _state = 2; goto case 2; case 2: var item = _enumerator.TryGetNext(out success); if (success) { return(_selector(item)); } break; } success = false; return(default(R)); }