Struct ReadOnlyArray<TValue>
Read-only access to an array or to a slice of an array.
Namespace: UnityEngine.InputSystem.Utilities
Syntax
public struct ReadOnlyArray<TValue> : IReadOnlyList<TValue>, IReadOnlyCollection<TValue>, IEnumerable<TValue>, IEnumerable
Type Parameters
| Name | Description |
|---|---|
| TValue | Type of values stored in the array. |
Remarks
The purpose of this struct is to allow exposing internal arrays directly such that no boxing and no going through interfaces is required but at the same time not allowing the internal arrays to be modified.
It differs from ReadOnlySpan<T> in that it can be stored on the heap and differs
from ReadOnlyCollection<T> in that it supports slices directly without needing
an intermediate object representing the slice.
Note that in most cases, the ReadOnlyArray instance should be treated as a temporary. The actual array referred to by a ReadOnlyArray instance is usually owned and probably mutated by another piece of code. When that code makes changes to the array, the ReadOnlyArray instance will not get updated.
Constructors
ReadOnlyArray(TValue[])
Construct a read-only array covering all of the given array.
Declaration
public ReadOnlyArray(TValue[] array)
Parameters
| Type | Name | Description |
|---|---|---|
| TValue[] | array | Array to index. |
ReadOnlyArray(TValue[], Int32, Int32)
Construct a read-only array that covers only the given slice of array.
Declaration
public ReadOnlyArray(TValue[] array, int index, int length)
Parameters
| Type | Name | Description |
|---|---|---|
| TValue[] | array | Array to index. |
| Int32 | index | Index at which to start indexing |
| Int32 | length | Length of the slice to index from |
Properties
Count
Number of elements in the array.
Declaration
public readonly int Count { get; }
Property Value
| Type | Description |
|---|---|
| Int32 |
Implements
Item[Int32]
Return the element at the given index.
Declaration
public readonly TValue this[int index] { get; }
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | index | Index into the array. |
Property Value
| Type | Description |
|---|---|
| TValue |
Implements
Exceptions
| Type | Condition |
|---|---|
| IndexOutOfRangeException |
|
| InvalidOperationException |
Methods
GetEnumerator()
Returns an enumerator that iterates through the read-only array.
Declaration
public ReadOnlyArray<TValue>.Enumerator GetEnumerator()
Returns
| Type | Description |
|---|---|
| ReadOnlyArray.Enumerator<> |
IndexOf(Predicate<TValue>)
Searches for the first element in the array for which the given predicate is true and returns the index of that element.
Declaration
public int IndexOf(Predicate<TValue> predicate)
Parameters
| Type | Name | Description |
|---|---|---|
| Predicate<TValue> | predicate | The predicate to be evaluated for each element which defines the condition for the search. |
Returns
| Type | Description |
|---|---|
| Int32 | Index of the first element for which |
Examples
// Searches for the first element in an integer array that is greater or equal to 5.
var haystack = new ReadOnlyArray<int>(new[] { 1, 2, 3, 4, 5, 6, 7 });
var index = haystack.IndexOf((value) => value >= 5); // index == 4
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If predicate is |
ToArray()
Convert to array.
Declaration
public TValue[] ToArray()
Returns
| Type | Description |
|---|---|
| TValue[] | A new array containing a copy of the contents of the read-only array. |
Operators
Implicit(TValue[] to ReadOnlyArray<TValue>)
Constructs a read-only array containing elements array.
Declaration
public static implicit operator ReadOnlyArray<TValue>(TValue[] array)
Parameters
| Type | Name | Description |
|---|---|---|
| TValue[] | array | An existing array containing elements to be wrapped as a read-only array. |
Returns
| Type | Description |
|---|---|
| ReadOnlyArray<TValue> |
Explicit Interface Implementations
IEnumerable<TValue>.GetEnumerator()
Declaration
IEnumerator<TValue> IEnumerable<TValue>.GetEnumerator()
Returns
| Type | Description |
|---|---|
| IEnumerator<TValue> |
Implements
IEnumerable.GetEnumerator()
Declaration
IEnumerator IEnumerable.GetEnumerator()
Returns
| Type | Description |
|---|---|
| IEnumerator |