Class FastList<T>
- Namespace
- Stride.Core.Collections
- Assembly
- Stride.Core.dll
Similar to List<T>, with direct access to underlying array.
It is recommended to use Spans instead: https://github.com/stride3d/stride/discussions/2298#discussioncomment-9779439
[DataSerializer(typeof(ListAllSerializer<,>), Mode = DataSerializerGenericMode.TypeAndGenericArguments)]
[Obsolete(".NET Lists can be faster in the latest .NET versions.")]
public class FastList<T> : IList<T>, ICollection<T>, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerableType Parameters
- T
- The type of elements in the list. 
- Inheritance
- 
      objectFastList<T>
- Implements
- 
      IList<T>ICollection<T>IEnumerable<T>
- Derived
- Extension Methods
Constructors
FastList()
public FastList()FastList(IEnumerable<T>)
public FastList(IEnumerable<T> collection)Parameters
- collectionIEnumerable<T>
FastList(int)
public FastList(int capacity)Parameters
- capacityint
Properties
Capacity
public int Capacity { get; set; }Property Value
Count
Gets the number of elements contained in the ICollection<T>.
public int Count { get; }Property Value
- int
- The number of elements contained in the ICollection<T>. 
IsReadOnly
Gets a value indicating whether the ICollection<T> is read-only.
public bool IsReadOnly { get; }Property Value
- bool
- true if the ICollection<T> is read-only; otherwise, false. 
this[int]
Gets or sets the element at the specified index.
public T this[int index] { get; set; }Parameters
- indexint
- The zero-based index of the element to get or set. 
Property Value
- T
- The element at the specified index. 
Exceptions
- ArgumentOutOfRangeException
- indexis not a valid index in the IList<T>.
- NotSupportedException
- The property is set and the IList<T> is read-only. 
Items
Gets the items.
[Obsolete("Its best to use a List<T> instead of FastList<T> and iterate through the list as a Span for peak performance.")]
public T[] Items { get; }Property Value
- T[]
Methods
Add(T)
Adds an item to the ICollection<T>.
public void Add(T item)Parameters
- itemT
- The object to add to the ICollection<T>. 
Exceptions
- NotSupportedException
- The ICollection<T> is read-only. 
AddRange(IEnumerable<T>)
public void AddRange(IEnumerable<T> collection)Parameters
- collectionIEnumerable<T>
AsReadOnly()
public ReadOnlyCollection<T> AsReadOnly()Returns
BinarySearch(int, int, T, IComparer<T>?)
public int BinarySearch(int index, int count, T item, IComparer<T>? comparer)Parameters
Returns
BinarySearch(T)
public int BinarySearch(T item)Parameters
- itemT
Returns
BinarySearch(T, IComparer<T>)
public int BinarySearch(T item, IComparer<T> comparer)Parameters
- itemT
- comparerIComparer<T>
Returns
Clear()
Removes all items from the ICollection<T>.
public void Clear()Exceptions
- NotSupportedException
- The ICollection<T> is read-only. 
Clear(bool)
Clears this list with a fast-clear option.
public void Clear(bool fastClear)Parameters
- fastClearbool
- if set to - truethis method only resets the count elements but doesn't clear items referenced already stored in the list.
Contains(T)
Determines whether the ICollection<T> contains a specific value.
public bool Contains(T item)Parameters
- itemT
- The object to locate in the ICollection<T>. 
Returns
- bool
- true if - itemis found in the ICollection<T>; otherwise, false.
CopyTo(int, T[], int, int)
public void CopyTo(int index, T[] array, int arrayIndex, int count)Parameters
CopyTo(T[])
public void CopyTo(T[] array)Parameters
- arrayT[]
CopyTo(T[], int)
Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.
public void CopyTo(T[] array, int arrayIndex)Parameters
- arrayT[]
- The one-dimensional Array that is the destination of the elements copied from ICollection<T>. The Array must have zero-based indexing. 
- arrayIndexint
- The zero-based index in - arrayat which copying begins.
Exceptions
- ArgumentNullException
- arrayis null.
- ArgumentOutOfRangeException
- arrayIndexis less than 0.
- ArgumentException
- The number of elements in the source ICollection<T> is greater than the available space from - arrayIndexto the end of the destination- array.
EnsureCapacity(int)
public void EnsureCapacity(int min)Parameters
- minint
Exists(Predicate<T>)
public bool Exists(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
Find(Predicate<T>)
public T? Find(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
- T
FindAll(Predicate<T>)
public FastList<T> FindAll(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
- FastList<T>
FindIndex(int, int, Predicate<T>)
public int FindIndex(int startIndex, int count, Predicate<T> match)Parameters
Returns
FindIndex(int, Predicate<T>)
public int FindIndex(int startIndex, Predicate<T> match)Parameters
Returns
FindIndex(Predicate<T>)
public int FindIndex(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
FindLast(Predicate<T>)
public T? FindLast(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
- T
FindLastIndex(int, int, Predicate<T>)
public int FindLastIndex(int startIndex, int count, Predicate<T> match)Parameters
Returns
FindLastIndex(int, Predicate<T>)
public int FindLastIndex(int startIndex, Predicate<T> match)Parameters
Returns
FindLastIndex(Predicate<T>)
public int FindLastIndex(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
ForEach(Action<T>)
public void ForEach(Action<T> action)Parameters
- actionAction<T>
GetEnumerator()
public FastList<T>.Enumerator GetEnumerator()Returns
GetRange(int, int)
public FastList<T> GetRange(int index, int count)Parameters
Returns
- FastList<T>
IncreaseCapacity(int)
public void IncreaseCapacity(int index)Parameters
- indexint
IndexOf(T)
Determines the index of a specific item in the IList<T>.
public int IndexOf(T item)Parameters
- itemT
- The object to locate in the IList<T>. 
Returns
- int
- The index of - itemif found in the list; otherwise, -1.
IndexOf(T, int)
public int IndexOf(T item, int index)Parameters
- itemT
- indexint
Returns
IndexOf(T, int, int)
public int IndexOf(T item, int index, int count)Parameters
Returns
Insert(int, T)
Inserts an item to the IList<T> at the specified index.
public void Insert(int index, T item)Parameters
- indexint
- The zero-based index at which - itemshould be inserted.
- itemT
- The object to insert into the IList<T>. 
Exceptions
- ArgumentOutOfRangeException
- indexis not a valid index in the IList<T>.
- NotSupportedException
- The IList<T> is read-only. 
InsertRange(int, IEnumerable<T>)
public void InsertRange(int index, IEnumerable<T> collection)Parameters
- indexint
- collectionIEnumerable<T>
LastIndexOf(T)
public int LastIndexOf(T item)Parameters
- itemT
Returns
LastIndexOf(T, int)
public int LastIndexOf(T item, int index)Parameters
- itemT
- indexint
Returns
LastIndexOf(T, int, int)
public int LastIndexOf(T item, int index, int count)Parameters
Returns
Remove(T)
Removes the first occurrence of a specific object from the ICollection<T>.
public bool Remove(T item)Parameters
- itemT
- The object to remove from the ICollection<T>. 
Returns
- bool
- true if - itemwas successfully removed from the ICollection<T>; otherwise, false. This method also returns false if- itemis not found in the original ICollection<T>.
Exceptions
- NotSupportedException
- The ICollection<T> is read-only. 
RemoveAll(Predicate<T>)
public int RemoveAll(Predicate<T> match)Parameters
- matchPredicate<T>
Returns
RemoveAt(int)
Removes the IList<T> item at the specified index.
public void RemoveAt(int index)Parameters
- indexint
- The zero-based index of the item to remove. 
Exceptions
- ArgumentOutOfRangeException
- indexis not a valid index in the IList<T>.
- NotSupportedException
- The IList<T> is read-only. 
RemoveRange(int, int)
public void RemoveRange(int index, int count)Parameters
Resize(int, bool)
public void Resize(int newSize, bool fastClear)Parameters
Reverse()
public void Reverse()Reverse(int, int)
public void Reverse(int index, int count)Parameters
Sort()
public void Sort()Sort(IComparer<T>)
public void Sort(IComparer<T> comparer)Parameters
- comparerIComparer<T>
Sort(int, int, IComparer<T>?)
public void Sort(int index, int count, IComparer<T>? comparer)Parameters
ToArray()
public T[] ToArray()Returns
- T[]
TrimExcess()
public void TrimExcess()TrueForAll(Predicate<T>)
public bool TrueForAll(Predicate<T> match)Parameters
- matchPredicate<T>