| 
    Enhanced C#
    
   Language of your choice: library documentation 
   | 
 
Helper struct. A sequence that stores one value, but acts like a list in which that value is repeated a specified number of times. Returned from Range.Repeat{T}. More...
  
 Helper struct. A sequence that stores one value, but acts like a list in which that value is repeated a specified number of times. Returned from Range.Repeat{T}.
Public fields | |
| int | _count | 
| T | _value | 
Properties | |
| int | Count [get] | 
| T | this[int index] [get] | 
| T IList< T >. | this[int index] [get, set] | 
| bool ICollection< T >. | IsReadOnly [get] | 
| bool | IsEmpty [get] | 
| T | Back [get] | 
| T | Front [get] | 
  Properties inherited from Loyc.Collections.IBRange< out T > | |
| T | Back [get] | 
| Returns the value of the last item in the range. More... | |
  Properties inherited from Loyc.Collections.IFRange< out T > | |
| T | Front [get] | 
| Returns the first value in the range, without popping it. More... | |
  Properties inherited from Loyc.Collections.IIsEmpty | |
| bool | IsEmpty [get] | 
Public Member Functions | |
| Repeated (T value, int count) | |
| T | TryGet (int index, out bool fail) | 
| Gets the item at the specified index, and does not throw an exception on failure. More... | |
| int | IndexOf (T item) | 
| IRange< T > IListSource< T >. | Slice (int start, int count) | 
| Returns a sub-range of this list. More... | |
| Slice_< T > | Slice (int start, int count) | 
| Returns a sub-range of this list. More... | |
| void IList< T >. | Insert (int index, T item) | 
| void IList< T >. | RemoveAt (int index) | 
| void ICollection< T >. | Add (T item) | 
| void ICollection< T >. | Clear () | 
| void ICollection< T >. | CopyTo (T[] array, int arrayIndex) | 
| bool ICollection< T >. | Remove (T item) | 
| bool | Contains (T item) | 
| 
System.Collections.IEnumerator  System.Collections.IEnumerable.  | GetEnumerator () | 
| IEnumerator< T > | GetEnumerator () | 
| T | PopBack (out bool fail) | 
| Removes the last item from the range and returns it. More... | |
| T | PopFront (out bool fail) | 
| Removes the first item from the range and returns it. More... | |
| 
IFRange< T > ICloneable < IFRange< T > >.  | Clone () | 
| 
IBRange< T > ICloneable < IBRange< T > >.  | Clone () | 
| 
IRange< T > ICloneable< IRange < T > >.  | Clone () | 
| Repeated< T > | Clone () | 
      
  | 
  inline | 
Removes the last item from the range and returns it.
| fail | Receives the current value of IsEmpty. | 
The remarks of IFRange{T}.PopFront apply to this method.
Implements Loyc.Collections.IBRange< out T >.
      
  | 
  inline | 
Removes the first item from the range and returns it.
| fail | Receives the current value of IIsEmpty.IsEmpty. | 
This method is a little unweildy in plain C#, but in EC# it will be a bit more convenient to use via extension methods like PopFirst(ref this Range range, T defaultValue) and PopFirst(ref this Range range), which are illegal in plain C#. 
I wanted to give this method the signature "bool PopFirst(out T first)" but the generic parameter "T" is covariant, i.e. it is marked "out T" which, ironically, is not compatible with "out T" parameters, only with return values.
Implements Loyc.Collections.IFRange< out T >.
      
  | 
  inline | 
Returns a sub-range of this list.
| start | The new range will start at this index in the current list (this location will be index [0] in the new range). | 
| count | The desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list. | 
| ArgumentException | The start index was below zero. | 
The (start, count) range is allowed to be invalid, as long as start is zero or above.
this.Count - start. Implementation note: do not compute (start + count) because it may overflow. Instead, test whether (count > this.Count - start). Most collections should use the following implementation:
IRange<T> IListSource<T>.Slice(int start, int count) { return Slice(start, count); } public Slice_<T> Slice(int start, int count) { return new Slice_<T>(this, start, count); }
Implements Loyc.Collections.IListSource< out T >.
      
  | 
  inline | 
Returns a sub-range of this list.
| start | The new range will start at this index in the current list (this location will be index [0] in the new range). | 
| count | The desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list. | 
| ArgumentException | The start index was below zero. | 
The (start, count) range is allowed to be invalid, as long as start is zero or above.
this.Count - start. Implementation note: do not compute (start + count) because it may overflow. Instead, test whether (count > this.Count - start). Most collections should use the following implementation:
IRange<T> IListSource<T>.Slice(int start, int count) { return Slice(start, count); } public Slice_<T> Slice(int start, int count) { return new Slice_<T>(this, start, count); }
Implements Loyc.Collections.IListSource< out T >.
      
  | 
  inline | 
Gets the item at the specified index, and does not throw an exception on failure.
| index | An index in the range 0 to Count-1. | 
| fail | A flag that is set on failure. | 
In my original design, the caller could provide a value to return on failure, but this would not allow T to be marked as "out" in C# 4. For the same reason, we cannot have a ref/out T parameter. Instead, the following extension methods are provided:
Implements Loyc.Collections.IListSource< out T >.
 1.8.7