Edit

Share via


Span<T> Struct

Definition

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

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

C#
[System.Runtime.InteropServices.Marshalling.NativeMarshalling(typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))]
public readonly ref struct Span<T>
C#
public readonly ref struct Span<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[], 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>(T[])

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

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, Int32)

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

Slice(Int32)

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

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>, IEqualityComparer<T>)

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

CommonPrefixLength<T>(Span<T>, ReadOnlySpan<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, T)

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

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>, 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, T, T)

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

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

Searches for any value other than value0 or value1.

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

Searches for any value other than the specified value.

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, 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)

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, T, T)

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

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)

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

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, 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)

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, T, T)

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

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)

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

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>, Int32)

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

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

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

Replace<T>(Span<T>, T, T, IEqualityComparer<T>)
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>, IEqualityComparer<T>)

Determines whether two sequences are equal by comparing the elements using an IEqualityComparer<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).

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

Sorts the elements in the entire Span<T> using the specified Comparison<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,TComparer>(Span<T>, TComparer)

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

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>(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,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

Product Versions
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Standard 2.0 (package-provided), 2.1

See also