Enhanced C#
Loyc library documentation
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Public fields | Public Member Functions | Static Public Member Functions | List of all members
Loyc.Collections.ReadOnlyArraySlice< T > Struct Template Reference

Source file:
Inheritance diagram for Loyc.Collections.ReadOnlyArraySlice< T >:
Loyc.Collections.IListSource< out T > Loyc.ICloneable< out T > Loyc.Collections.IIsEmpty Loyc.Collections.IScannable< T > Loyc.Collections.ISource< out T > Loyc.Collections.ITryGet< in K, out V > Loyc.Collections.IIndexed< in K, out V > Loyc.Collections.IScan< T > Loyc.Collections.ICount Loyc.Collections.IIsEmpty

Public fields

ReadOnlyMemory< T > _mem
 
this[int index] => _mem.Span[index]
 
int Count => _mem.Length
 
bool IsEmpty => _mem.Length == 0
 

Public Member Functions

 ReadOnlyArraySlice (T[] list, int start, int count)
 
 ReadOnlyArraySlice (T[] list)
 
 ReadOnlyArraySlice (ReadOnlyMemory< T > mem)
 
ReadOnlyArraySlice< T > Clone ()
 
IEnumerator< T > GetEnumerator ()
 
IEnumerator IEnumerable. GetEnumerator ()
 
IListSource< T > IListSource< T >. Slice (int start, int count)
 Returns a sub-range of this list. More...
 
ReadOnlyArraySlice< T > Slice (int start, int count=int.MaxValue)
 Returns a sub-range of this list. More...
 
TryGet (int index, out bool fail)
 
InternalList.Scanner< T > Scan ()
 
IScanner< T > IScan< T >. Scan ()
 
- Public Member Functions inherited from Loyc.Collections.ITryGet< in K, out V >
TryGet (K key, out bool fail)
 Gets the item for the specified key or index, and does not throw an exception on failure. More...
 

Static Public Member Functions

static implicit operator ReadOnlyArraySlice< T > (T[] array)
 
static implicit operator ReadOnlyArraySlice< T > (ReadOnlyMemory< T > array)
 
static implicit operator ReadOnlyArraySlice< T > (Memory< T > array)
 
static implicit operator ReadOnlyMemory< T > (ReadOnlyArraySlice< T > array)
 

Additional Inherited Members

- Properties inherited from Loyc.Collections.ISource< out T >
new int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.ICount
int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.IIsEmpty
bool IsEmpty [get]
 
- Properties inherited from Loyc.Collections.IIndexed< in K, out V >
this[K key] [get]
 Gets the value associated with the specified key. More...
 

Member Function Documentation

IListSource<T> IListSource<T>. Loyc.Collections.ReadOnlyArraySlice< T >.Slice ( int  start,
int  count 
)

Returns a sub-range of this list.

Parameters
startThe new range will start at this index in the current list (this location will be index [0] in the new range).
countThe 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
ArgumentExceptionThe 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:

IListSource<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 >.

ReadOnlyArraySlice<T> Loyc.Collections.ReadOnlyArraySlice< T >.Slice ( int  start,
int  count = int.MaxValue 
)
inline

Returns a sub-range of this list.

Parameters
startThe new range will start at this index in the current list (this location will be index [0] in the new range).
countThe 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
ArgumentExceptionThe 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:

IListSource<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 >.