SpanOwner<T> Struct

Definition

A stack-only type with the ability to rent a buffer of a specified length and getting a Span<T> from it. This type mirrors MemoryOwner<T> but without allocations and with further optimizations. As this is a stack-only type, it relies on the duck-typed IDisposable pattern introduced with C# 8. It should be used like so:

using (SpanOwner<byte> buffer = SpanOwner<byte>.Allocate(1024))
{
    // Use the buffer here...
}

As soon as the code leaves the scope of that using block, the underlying buffer will automatically be disposed. The APIs in SpanOwner<T> rely on this pattern for extra performance, eg. they don't perform the additional checks that are done in MemoryOwner<T> to ensure that the buffer hasn't been disposed before returning a Memory<T> or Span<T> instance from it. As such, this type should always be used with a using block or expression. Not doing so will cause the underlying buffer not to be returned to the shared pool.

public readonly ref struct SpanOwner<T>
type SpanOwner<'T> = struct
Public Structure SpanOwner(Of T)

Type Parameters

T

The type of items to store in the current instance.

Inheritance
SpanOwner<T>

Properties

Empty

Gets an empty SpanOwner<T> instance.

Length

Gets the number of items in the current instance

Span

Gets a Span<T> wrapping the memory belonging to the current instance.

Methods

Allocate(Int32)

Creates a new SpanOwner<T> instance with the specified parameters.

Allocate(Int32, AllocationMode)

Creates a new SpanOwner<T> instance with the specified parameters.

Allocate(Int32, ArrayPool<T>)

Creates a new SpanOwner<T> instance with the specified parameters.

Allocate(Int32, ArrayPool<T>, AllocationMode)

Creates a new SpanOwner<T> instance with the specified parameters.

DangerousGetArray()

Gets an ArraySegment<T> instance wrapping the underlying T array in use.

DangerousGetReference()

Returns a reference to the first element within the current instance, with no bounds check.

Dispose()

Implements the duck-typed Dispose() method.

ToString()

Returns the fully qualified type name of this instance.

Applies to