Span<T> Struct

Definition

Provides a type-safe and memory-safe representation of a contiguous region of arbitrary memory.

generic <typename T>
public value class Span
public readonly ref struct Span<T>
[System.Runtime.InteropServices.Marshalling.NativeMarshalling(typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))]
public readonly ref struct Span<T>
type Span<'T> = struct
[<System.Runtime.InteropServices.Marshalling.NativeMarshalling(typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))>]
type Span<'T> = struct
Public Structure Span(Of T)

Type Parameters

T

The type of items in the Span<T>.

Inheritance
Span<T>
Attributes

Remarks

For more information about this API, see Supplemental API remarks for Span<T>.

Constructors

Span<T>(T)

Creates a new Span<T> of length 1 around the specified reference.

Span<T>(T[])

Creates a new Span<T> object over the entirety of a specified array.

Span<T>(T[], Int32, Int32)

Creates a new Span<T> object that includes a specified number of elements of an array starting at a specified index.

Span<T>(Void*, Int32)

Creates a new Span<T> object from a specified number of T elements starting at a specified memory address.

Properties

Empty

Returns an empty Span<T> object.

IsEmpty

Returns a value that indicates whether the current Span<T> is empty.

Item[Int32]

Gets the element at the specified zero-based index.

Length

Returns the length of the current span.

Methods

Clear()

Clears the contents of this Span<T> object.

CopyTo(Span<T>)

Copies the contents of this Span<T> into a destination Span<T>.

Equals(Object)
Obsolete.
Obsolete.

Calls to this method are not supported.

Fill(T)

Fills the elements of this span with a specified value.

GetEnumerator()

Returns an enumerator for this Span<T>.

GetHashCode()
Obsolete.

Throws a NotSupportedException.

GetPinnableReference()

Returns a reference to an object of type T that can be used for pinning.

This method is intended to support .NET compilers and is not intended to be called by user code.

Slice(Int32)

Forms a slice out of the current span that begins at a specified index.

Slice(Int32, Int32)

Forms a slice out of the current span starting at a specified index for a specified length.

ToArray()

Copies the contents of this span into a new array.

ToString()

Returns the string representation of this Span<T> object.

TryCopyTo(Span<T>)

Attempts to copy the current Span<T> to a destination Span<T> and returns a value that indicates whether the copy operation succeeded.

Operators

Equality(Span<T>, Span<T>)

Returns a value that indicates whether two Span<T> objects are equal.

Implicit(ArraySegment<T> to Span<T>)

Defines an implicit conversion of an ArraySegment<T> to a Span<T>.

Implicit(Span<T> to ReadOnlySpan<T>)

Defines an implicit conversion of a Span<T> to a ReadOnlySpan<T>.

Implicit(T[] to Span<T>)

Defines an implicit conversion of an array to a Span<T>.

Inequality(Span<T>, Span<T>)

Returns a value that indicates whether two Span<T> objects are not equal.

Extension Methods

ToImmutableArray<T>(Span<T>)

Converts the span to an immutable array.

BinarySearch<T>(Span<T>, IComparable<T>)

Searches an entire sorted Span<T> for a value using the specified IComparable<T> generic interface.

BinarySearch<T,TComparer>(Span<T>, T, TComparer)

Searches an entire sorted Span<T> for a specified value using the specified TComparer generic type.

BinarySearch<T,TComparable>(Span<T>, TComparable)

Searches an entire sorted Span<T> for a value using the specified TComparable generic type.

CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>)

Finds the length of any common prefix shared between span and other.

CommonPrefixLength<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>)

Finds the length of any common prefix shared between span and other.

Contains<T>(Span<T>, T)

Indicates whether a specified value is found in a span. Values are compared using IEquatable{T}.Equals(T).

ContainsAny<T>(Span<T>, T, T)

Searches for an occurrence of value0 or value1, and returns true if found. If not found, returns false.

ContainsAny<T>(Span<T>, T, T, T)

Searches for an occurrence of value0, value1, or value2, and returns true if found. If not found, returns false.

ContainsAny<T>(Span<T>, SearchValues<T>)

Searches for an occurrence of any of the specified values and returns true if found. If not found, returns false.

ContainsAny<T>(Span<T>, ReadOnlySpan<T>)

Searches for an occurrence of any of the specified values and returns true if found. If not found, returns false.

ContainsAnyExcept<T>(Span<T>, T)

Searches for any value other than the specified value.

ContainsAnyExcept<T>(Span<T>, T, T)

Searches for any value other than value0 or value1.

ContainsAnyExcept<T>(Span<T>, T, T, T)

Searches for any value other than value0, value1, or value2.

ContainsAnyExcept<T>(Span<T>, SearchValues<T>)

Searches for any value other than the specified values.

ContainsAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Searches for any value other than the specified values.

ContainsAnyExceptInRange<T>(Span<T>, T, T)

Searches for any value outside of the range between lowInclusive and highInclusive, inclusive.

ContainsAnyInRange<T>(Span<T>, T, T)

Searches for any value in the range between lowInclusive and highInclusive, inclusive, and returns true if found. If not found, returns false.

Count<T>(Span<T>, T)

Counts the number of times the specified value occurs in the span.

Count<T>(Span<T>, ReadOnlySpan<T>)

Counts the number of times the specified value occurs in the span.

EndsWith<T>(Span<T>, ReadOnlySpan<T>)

Determines whether the specified sequence appears at the end of a span.

IndexOf<T>(Span<T>, T)

Searches for the specified value and returns the index of its first occurrence. Values are compared using IEquatable{T}.Equals(T).

IndexOf<T>(Span<T>, ReadOnlySpan<T>)

Searches for the specified sequence and returns the index of its first occurrence. Values are compared using IEquatable{T}.Equals(T).

IndexOfAny<T>(Span<T>, T, T)

Searches for the first index of any of the specified values similar to calling IndexOf several times with the logical OR operator.

IndexOfAny<T>(Span<T>, T, T, T)

Searches for the first index of any of the specified values similar to calling IndexOf several times with the logical OR operator.

IndexOfAny<T>(Span<T>, SearchValues<T>)

Searches for the first index of any of the specified values.

IndexOfAny<T>(Span<T>, ReadOnlySpan<T>)

Searches for the first index of any of the specified values similar to calling IndexOf several times with the logical OR operator.

IndexOfAnyExcept<T>(Span<T>, T)

Searches for the first index of any value other than the specified value.

IndexOfAnyExcept<T>(Span<T>, T, T)

Searches for the first index of any value other than the specified value0 or value1.

IndexOfAnyExcept<T>(Span<T>, T, T, T)

Searches for the first index of any value other than the specified value0, value1, or value2.

IndexOfAnyExcept<T>(Span<T>, SearchValues<T>)

Searches for the first index of any value other than the specified values.

IndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Searches for the first index of any value other than the specified values.

IndexOfAnyExceptInRange<T>(Span<T>, T, T)

Searches for the first index of any value outside of the range between lowInclusive and highInclusive, inclusive.

IndexOfAnyInRange<T>(Span<T>, T, T)

Searches for the first index of any value in the range between lowInclusive and highInclusive, inclusive.

LastIndexOf<T>(Span<T>, T)

Searches for the specified value and returns the index of its last occurrence. Values are compared using IEquatable{T}.Equals(T).

LastIndexOf<T>(Span<T>, ReadOnlySpan<T>)

Searches for the specified sequence and returns the index of its last occurrence. Values are compared using IEquatable{T}.Equals(T).

LastIndexOfAny<T>(Span<T>, T, T)

Searches for the last index of any of the specified values similar to calling LastIndexOf several times with the logical OR operator.

LastIndexOfAny<T>(Span<T>, T, T, T)

Searches for the last index of any of the specified values similar to calling LastIndexOf several times with the logical OR operator.

LastIndexOfAny<T>(Span<T>, SearchValues<T>)

Searches for the last index of any of the specified values.

LastIndexOfAny<T>(Span<T>, ReadOnlySpan<T>)

Searches for the last index of any of the specified values similar to calling LastIndexOf several times with the logical OR operator.

LastIndexOfAnyExcept<T>(Span<T>, T)

Searches for the last index of any value other than the specified value.

LastIndexOfAnyExcept<T>(Span<T>, T, T)

Searches for the last index of any value other than the specified value0 or value1.

LastIndexOfAnyExcept<T>(Span<T>, T, T, T)

Searches for the last index of any value other than the specified value0, value1, or value2.

LastIndexOfAnyExcept<T>(Span<T>, SearchValues<T>)

Searches for the last index of any value other than the specified values.

LastIndexOfAnyExcept<T>(Span<T>, ReadOnlySpan<T>)

Searches for the last index of any value other than the specified values.

LastIndexOfAnyExceptInRange<T>(Span<T>, T, T)

Searches for the last index of any value outside of the range between lowInclusive and highInclusive, inclusive.

LastIndexOfAnyInRange<T>(Span<T>, T, T)

Searches for the last index of any value in the range between lowInclusive and highInclusive, inclusive.

Overlaps<T>(Span<T>, ReadOnlySpan<T>)

Determines whether a span and a read-only span overlap in memory.

Overlaps<T>(Span<T>, ReadOnlySpan<T>, Int32)

Determines whether a span and a read-only span overlap in memory and outputs the element offset.

Replace<T>(Span<T>, T, T)

Replaces all occurrences of oldValue with newValue.

Reverse<T>(Span<T>)

Reverses the sequence of the elements in the entire span.

SequenceCompareTo<T>(Span<T>, ReadOnlySpan<T>)

Determines the relative order of a span and a read-only span by comparing the elements using IComparable{T}.CompareTo(T).

SequenceEqual<T>(Span<T>, ReadOnlySpan<T>)

Determines whether a span and a read-only span are equal by comparing the elements using IEquatable{T}.Equals(T).

SequenceEqual<T>(Span<T>, ReadOnlySpan<T>, IEqualityComparer<T>)

Determines whether two sequences are equal by comparing the elements using an IEqualityComparer<T>.

Sort<T>(Span<T>)

Sorts the elements in the entire Span<T> using the IComparable<T> implementation of each element of the Span<T>.

Sort<T>(Span<T>, Comparison<T>)

Sorts the elements in the entire Span<T> using the specified Comparison<T>.

Sort<T,TComparer>(Span<T>, TComparer)

Sorts the elements in the entire Span<T> using the TComparer.

Sort<TKey,TValue>(Span<TKey>, Span<TValue>)

Sorts a pair of spans (one containing the keys and the other containing the corresponding items) based on the keys in the first Span<T> using the IComparable<T> implementation of each key.

Sort<TKey,TValue>(Span<TKey>, Span<TValue>, Comparison<TKey>)

Sorts a pair of spans (one containing the keys and the other containing the corresponding items) based on the keys in the first Span<T> using the specified comparison.

Sort<TKey,TValue,TComparer>(Span<TKey>, Span<TValue>, TComparer)

Sorts a pair of spans (one containing the keys and the other containing the corresponding items) based on the keys in the first Span<T> using the specified comparer.

StartsWith<T>(Span<T>, ReadOnlySpan<T>)

Determines whether a specified sequence appears at the start of a span.

Trim<T>(Span<T>, T)

Removes all leading and trailing occurrences of a specified element from a span.

Trim<T>(Span<T>, ReadOnlySpan<T>)

Removes all leading and trailing occurrences of a set of elements specified in a read-only span from a span.

TrimEnd<T>(Span<T>, T)

Removes all trailing occurrences of a specified element from a span.

TrimEnd<T>(Span<T>, ReadOnlySpan<T>)

Removes all trailing occurrences of a set of elements specified in a read-only span from a span.

TrimStart<T>(Span<T>, T)

Removes all leading occurrences of a specified element from the span.

TrimStart<T>(Span<T>, ReadOnlySpan<T>)

Removes all leading occurrences of a set of elements specified in a read-only span from the span.

Applies to

See also