Adapter: a reversed of an IList{T}. TODO: unit tests.
|
| ReversedList (IList< T > list) |
|
bool | Equals (ReversedList< T > obj) |
|
override bool | Equals (object obj) |
| Returns true iff the parameter 'obj' is a wrapper around the same object that this object wraps. More...
|
|
override int | GetHashCode () |
| Returns the hashcode of the wrapped object. More...
|
|
override string | ToString () |
| Returns ToString() of the wrapped object. More...
|
|
int | IndexOf (T item) |
|
void | Insert (int index, T item) |
|
void | RemoveAt (int index) |
|
void | Add (T item) |
|
void | Clear () |
|
bool | Contains (T item) |
|
void | CopyTo (T[] array, int arrayIndex) |
|
bool | Remove (T item) |
|
IEnumerator< T > | GetEnumerator () |
|
System.Collections.IEnumerator
System.Collections.IEnumerable. | GetEnumerator () |
|
int | RemoveAll (Predicate< T > match) |
| Removes the all the elements that match the conditions defined by the specified predicate. More...
|
|
void | AddRange (IEnumerable< T > list) |
|
void | AddRange (IReadOnlyCollection< T > list) |
|
bool | TrySet (int index, T value) |
|
T | TryGet (int index, out bool fail) |
| Gets the item at the specified index, and does not throw an exception on failure. More...
|
|
IRange< T > | Slice (int start, int count=int.MaxValue) |
| Returns a sub-range of this list. More...
|
|
void | InsertRange (int index, IEnumerable< T > list) |
|
void | InsertRange (int index, IReadOnlyCollection< T > list) |
|
void | RemoveRange (int index, int amount) |
|
IRange<T> Loyc.Collections.ReversedList< T >.Slice |
( |
int |
start, |
|
|
int |
count = int.MaxValue |
|
) |
| |
|
inline |
Returns a sub-range of this list.
- Parameters
-
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. |
- Returns
- Returns a sub-range of this range.
- Exceptions
-
ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as start is zero or above.
-
If count is below zero, or if start is above the original Count, the Count of the new slice is set to zero.
-
if (start + count) is above the original Count, the Count of the new slice is reduced to
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 >.
T Loyc.Collections.ReversedList< T >.TryGet |
( |
int |
index, |
|
|
out bool |
fail |
|
) |
| |
|
inline |
Gets the item at the specified index, and does not throw an exception on failure.
- Parameters
-
index | An index in the range 0 to Count-1. |
fail | A flag that is set on failure. |
- Returns
- The element at the specified index, or default(T) if the index is not valid.
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:
bool TryGet(
int index, ref T value);
T
TryGet(
int, T defaultValue);
Implements Loyc.Collections.IListSource< out T >.