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>
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 int Count { get; }
Property Value
Type | Description |
---|---|
Int32 |
Item[Int32]
Return the element at the given index.
Declaration
public TValue this[int index] { get; }
Parameters
Type | Name | Description |
---|---|---|
Int32 | index | Index into the array. |
Property Value
Type | Description |
---|---|
TValue |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException |
|
InvalidOperationException |
Methods
GetEnumerator()
Declaration
public IEnumerator<TValue> GetEnumerator()
Returns
Type | Description |
---|---|
IEnumerator<TValue> |
IndexOf(Predicate<TValue>)
Declaration
public int IndexOf(Predicate<TValue> predicate)
Parameters
Type | Name | Description |
---|---|---|
Predicate<TValue> | predicate |
Returns
Type | Description |
---|---|
Int32 |
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>)
Declaration
public static implicit operator ReadOnlyArray<TValue>(TValue[] array)
Parameters
Type | Name | Description |
---|---|---|
TValue[] | array |
Returns
Type | Description |
---|---|
ReadOnlyArray<TValue> |
Explicit Interface Implementations
IEnumerable.GetEnumerator()
Declaration
IEnumerator IEnumerable.GetEnumerator()
Returns
Type | Description |
---|---|
IEnumerator |