Struct UnsafeList | Collections | 0.15.0-preview.21
docs.unity3d.com
    Show / Hide Table of Contents

    Struct UnsafeList

    An unmanaged, untyped, resizable list, without any thread safety check features.

    Namespace: Unity.Collections.LowLevel.Unsafe
    Syntax
    public struct UnsafeList : INativeDisposable, IDisposable

    Constructors

    UnsafeList(Int32, Int32, Int32, Allocator, NativeArrayOptions)

    Constructs a new container with the specified initial capacity and type of memory allocation.

    Declaration
    public UnsafeList(int sizeOf, int alignOf, int initialCapacity, Allocator allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
    Parameters
    Type Name Description
    Int32 sizeOf

    Size of element.

    Int32 alignOf

    Alignment of element.

    Int32 initialCapacity

    The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array.

    Allocator allocator

    A member of the Unity.Collections.Allocator enumeration.

    NativeArrayOptions options

    Memory should be cleared on allocation or left uninitialized.

    UnsafeList(Int32, Int32, Int32, AllocatorManager.AllocatorHandle, NativeArrayOptions)

    Constructs a new container with the specified initial capacity and type of memory allocation.

    Declaration
    public UnsafeList(int sizeOf, int alignOf, int initialCapacity, AllocatorManager.AllocatorHandle allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
    Parameters
    Type Name Description
    Int32 sizeOf

    Size of element.

    Int32 alignOf

    Alignment of element.

    Int32 initialCapacity

    The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array.

    AllocatorManager.AllocatorHandle allocator

    A member of the Unity.Collections.Allocator enumeration.

    NativeArrayOptions options

    Memory should be cleared on allocation or left uninitialized.

    UnsafeList(Void*, Int32)

    Constructs container as view into memory.

    Declaration
    public UnsafeList(void *ptr, int length)
    Parameters
    Type Name Description
    Void* ptr

    Pointer to data.

    Int32 length

    Lenght of data in bytes.

    UnsafeList(Allocator)

    Constructs a new container with type of memory allocation.

    Declaration
    public UnsafeList(Allocator allocator)
    Parameters
    Type Name Description
    Allocator allocator

    A member of the Unity.Collections.Allocator enumeration.

    Remarks

    The list initially has a capacity of one. To avoid reallocating memory for the list, specify sufficient capacity up front.

    Fields

    Allocator

    Declaration
    public AllocatorManager.AllocatorHandle Allocator
    Field Value
    Type Description
    AllocatorManager.AllocatorHandle

    Capacity

    Declaration
    public int Capacity
    Field Value
    Type Description
    Int32

    Length

    Declaration
    public int Length
    Field Value
    Type Description
    Int32

    Ptr

    Declaration
    [NativeDisableUnsafePtrRestriction]
    public void *Ptr
    Field Value
    Type Description
    Void*

    Properties

    IsCreated

    Reports whether memory for the container is allocated.

    Declaration
    public bool IsCreated { get; }
    Property Value
    Type Description
    Boolean

    True if this container object's internal storage has been allocated.

    Remarks

    Note that the container storage is not created if you use the default constructor. You must specify at least an allocation type to construct a usable container.

    Warning: the IsCreated property can't be used to determine whether a copy of a container is still valid. If you dispose any copy of the container, the container storage is deallocated. However, the properties of the other copies of the container (including the original) are not updated. As a result the IsCreated property of the copies still return true even though the container storage has been deallocated.

    IsEmpty

    Reports whether container is empty.

    Declaration
    public bool IsEmpty { get; }
    Property Value
    Type Description
    Boolean

    True if this container empty.

    Methods

    Add<T>(T)

    Adds an element to the list.

    Declaration
    public void Add<T>(T value)
        where T : struct
    Parameters
    Type Name Description
    T value

    The value to be added at the end of the list.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    If the list has reached its current capacity, it copies the original, internal array to a new, larger array, and then deallocates the original.

    AddNoResize<T>(T)

    Adds an element to the list.

    Declaration
    public void AddNoResize<T>(T value)
        where T : struct
    Parameters
    Type Name Description
    T value

    The value to be added at the end of the list.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.

    AddRange<T>(Void*, Int32)

    Adds elements from a buffer to this list.

    Declaration
    public void AddRange<T>(void *ptr, int length)
        where T : struct
    Parameters
    Type Name Description
    Void* ptr

    A pointer to the buffer.

    Int32 length

    The number of elements to add to the list.

    Type Parameters
    Name Description
    T

    Source type of elements

    AddRange<T>(UnsafeList)

    Adds elements from a list to this list.

    Declaration
    public void AddRange<T>(UnsafeList list)
        where T : struct
    Parameters
    Type Name Description
    UnsafeList list

    Other container to copy elements from.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    If the list has reached its current capacity, it copies the original, internal array to a new, larger array, and then deallocates the original.

    AddRangeNoResize<T>(Void*, Int32)

    Adds elements from a buffer to this list.

    Declaration
    public void AddRangeNoResize<T>(void *ptr, int length)
        where T : struct
    Parameters
    Type Name Description
    Void* ptr

    A pointer to the buffer.

    Int32 length

    The number of elements to add to the list.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.

    AddRangeNoResize<T>(UnsafeList)

    Adds elements from a list to this list.

    Declaration
    public void AddRangeNoResize<T>(UnsafeList list)
        where T : struct
    Parameters
    Type Name Description
    UnsafeList list

    Other container to copy elements from.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    If the list has reached its current capacity, internal array won't be resized, and exception will be thrown.

    AsParallelReader()

    Returns parallel reader instance.

    Declaration
    public UnsafeList.ParallelReader AsParallelReader()
    Returns
    Type Description
    UnsafeList.ParallelReader

    Parallel reader instance.

    AsParallelWriter()

    Returns parallel writer instance.

    Declaration
    public UnsafeList.ParallelWriter AsParallelWriter()
    Returns
    Type Description
    UnsafeList.ParallelWriter

    Parallel writer instance.

    Clear()

    Clears the container.

    Declaration
    public void Clear()
    Remarks

    The container capacity remains unchanged.

    Contains<T>(T)

    Determines whether an element is in the list.

    Declaration
    public bool Contains<T>(T value)
        where T : struct, IEquatable<T>
    Parameters
    Type Name Description
    T value
    Returns
    Type Description
    Boolean

    True, if element is found.

    Type Parameters
    Name Description
    T

    Source type of elements

    Create(Int32, Int32, Int32, Allocator, NativeArrayOptions)

    Creates a new container with the specified initial capacity and type of memory allocation.

    Declaration
    public static UnsafeList*Create(int sizeOf, int alignOf, int initialCapacity, Allocator allocator, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
    Parameters
    Type Name Description
    Int32 sizeOf

    Size of element.

    Int32 alignOf

    Alignment of element.

    Int32 initialCapacity

    The initial capacity of the list. If the list grows larger than its capacity, the internal array is copied to a new, larger array.

    Allocator allocator

    A member of the Unity.Collections.Allocator enumeration.

    NativeArrayOptions options

    Memory should be cleared on allocation or left uninitialized.

    Returns
    Type Description
    UnsafeList*

    New initialized container.

    Destroy(UnsafeList*)

    Destroys container.

    Declaration
    public static void Destroy(UnsafeList*listData)
    Parameters
    Type Name Description
    UnsafeList* listData

    Container to destroy.

    Dispose()

    Disposes of this container and deallocates its memory immediately.

    Declaration
    public void Dispose()

    Dispose(JobHandle)

    Safely disposes of this container and deallocates its memory when the jobs that use it have completed.

    Declaration
    public JobHandle Dispose(JobHandle inputDeps)
    Parameters
    Type Name Description
    JobHandle inputDeps

    The job handle or handles for any scheduled jobs that use this container.

    Returns
    Type Description
    JobHandle

    A new job handle containing the prior handles as well as the handle for the job that deletes the container.

    Implements
    INativeDisposable.Dispose(JobHandle)
    Remarks

    You can call this function dispose of the container immediately after scheduling the job. Pass the JobHandle returned by the Job.Schedule method using the jobHandle parameter so the job scheduler can dispose the container after all jobs using it have run.

    IndexOf<T>(T)

    Searches for the specified element in list.

    Declaration
    public int IndexOf<T>(T value)
        where T : struct, IEquatable<T>
    Parameters
    Type Name Description
    T value
    Returns
    Type Description
    Int32

    The zero-based index of the first occurrence element if found, otherwise returns -1.

    Type Parameters
    Name Description
    T

    Source type of elements

    InsertRangeWithBeginEnd<T>(Int32, Int32)

    Inserts a number of items into a container at a specified zero-based index.

    Declaration
    public void InsertRangeWithBeginEnd<T>(int begin, int end)
        where T : struct
    Parameters
    Type Name Description
    Int32 begin

    The zero-based index at which the new elements should be inserted.

    Int32 end

    The zero-based index just after where the elements should be removed.

    Type Parameters
    Name Description
    T

    Source type of elements

    Exceptions
    Type Condition
    ArgumentException

    Thrown if end argument is less than begin argument.

    ArgumentOutOfRangeException

    Thrown if begin or end arguments are not positive or out of bounds.

    RemoveAt<T>(Int32)

    Truncates the list by removing the item at the specified index, and shifting all remaining items to replace removed item. The list is shortened by one.

    Declaration
    public void RemoveAt<T>(int index)
        where T : struct
    Parameters
    Type Name Description
    Int32 index

    The index of the item to delete.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    This method of removing item is useful only in case when list is ordered and user wants to preserve order in list after removal In majority of cases is not important and user should use more performant RemoveAtSwapBack.

    RemoveAtSwapBack<T>(Int32)

    Truncates the list by replacing the item at the specified index with the last item in the list. The list is shortened by one.

    Declaration
    public void RemoveAtSwapBack<T>(int index)
        where T : struct
    Parameters
    Type Name Description
    Int32 index

    The index of the item to delete.

    Type Parameters
    Name Description
    T

    Source type of elements

    Exceptions
    Type Condition
    ArgumentException

    Thrown if end argument is less than begin argument.

    ArgumentOutOfRangeException

    Thrown if begin or end arguments are not positive or out of bounds.

    RemoveRangeSwapBackWithBeginEnd<T>(Int32, Int32)

    Truncates the list by replacing the item at the specified index range with the items from the end the list. The list is shortened by number of elements in range.

    Declaration
    public void RemoveRangeSwapBackWithBeginEnd<T>(int begin, int end)
        where T : struct
    Parameters
    Type Name Description
    Int32 begin

    The first index of the item to remove.

    Int32 end

    The index past-the-last item to remove.

    Type Parameters
    Name Description
    T

    Source type of elements

    Exceptions
    Type Condition
    ArgumentException

    Thrown if end argument is less than begin argument.

    ArgumentOutOfRangeException

    Thrown if begin or end arguments are not positive or out of bounds.

    RemoveRangeWithBeginEnd<T>(Int32, Int32)

    Truncates the list by removing the items at the specified index range, and shifting all remaining items to replace removed items. The list is shortened by number of elements in range.

    Declaration
    public void RemoveRangeWithBeginEnd<T>(int begin, int end)
        where T : struct
    Parameters
    Type Name Description
    Int32 begin

    The first index of the item to remove.

    Int32 end

    The index past-the-last item to remove.

    Type Parameters
    Name Description
    T

    Source type of elements

    Remarks

    This method of removing item(s) is useful only in case when list is ordered and user wants to preserve order in list after removal In majority of cases is not important and user should use more performant RemoveRangeSwapBackWithBeginEnd.

    Exceptions
    Type Condition
    ArgumentException

    Thrown if end argument is less than begin argument.

    ArgumentOutOfRangeException

    Thrown if begin or end arguments are not positive or out of bounds.

    Resize(Int32, Int32, Int32, NativeArrayOptions)

    Changes the list length, resizing if necessary.

    Declaration
    public void Resize(int sizeOf, int alignOf, int length, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
    Parameters
    Type Name Description
    Int32 sizeOf

    Size of element.

    Int32 alignOf

    Alignment of element.

    Int32 length

    The new length of the list.

    NativeArrayOptions options

    Memory should be cleared on allocation or left uninitialized.

    Resize<T>(Int32, NativeArrayOptions)

    Changes the list length, resizing if necessary.

    Declaration
    public void Resize<T>(int length, NativeArrayOptions options = NativeArrayOptions.UninitializedMemory)
        where T : struct
    Parameters
    Type Name Description
    Int32 length

    The new length of the list.

    NativeArrayOptions options

    Memory should be cleared on allocation or left uninitialized.

    Type Parameters
    Name Description
    T

    Source type of elements

    SetCapacity<T>(Int32)

    Set the number of items that can fit in the container.

    Declaration
    public void SetCapacity<T>(int capacity)
        where T : struct
    Parameters
    Type Name Description
    Int32 capacity

    The number of items that the container can hold before it resizes its internal storage.

    Type Parameters
    Name Description
    T

    Source type of elements

    TrimExcess<T>()

    Sets the capacity to the actual number of elements in the container.

    Declaration
    public void TrimExcess<T>()
        where T : struct
    Type Parameters
    Name Description
    T

    Source type of elements

    Extension Methods

    NativeSortExtension.Sort<T>(UnsafeList)
    NativeSortExtension.Sort<T, U>(UnsafeList, U)
    NativeSortExtension.Sort<T>(UnsafeList, JobHandle)
    NativeSortExtension.Sort<T, U>(UnsafeList, U, JobHandle)
    NativeSortExtension.BinarySearch<T>(UnsafeList, T)
    NativeSortExtension.BinarySearch<T, U>(UnsafeList, T, U)
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023