ReadOnlySpan<T> 结构

定义

提供任意内存连续区域的类型安全且内存安全的只读表示形式。

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

类型参数

T

ReadOnlySpan<T>项的类型。

继承
ReadOnlySpan<T>
属性

注解

ReadOnlySpan<T> 是堆栈上分配的 ref 结构 ,永远无法转义到托管堆。 Ref 结构类型具有许多限制,以确保无法将其提升到托管堆,包括无法装箱、在 lambda 表达式中捕获、分配给类型的 Object变量、 dynamic 分配给变量以及它们无法实现任何接口类型。

ReadOnlySpan<T>实例通常用于引用数组或数组的一部分的元素。 但是,与数组不同,ReadOnlySpan<T> 实例可以指向托管内存、本机内存或堆栈上管理的内存。

构造函数

名称 说明
ReadOnlySpan<T>(T)

围绕指定的引用创建长度 1 的新 ReadOnlySpan<T> 长度。

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

创建一个新 ReadOnlySpan<T> 元素,其中包含从指定索引开始的数组的指定数目的元素。

ReadOnlySpan<T>(T[])

在指定数组的整个位置创建一个新 ReadOnlySpan<T> 项。

ReadOnlySpan<T>(Void*, Int32)

从指定内存地址开始的ReadOnlySpan<T>指定数量的元素创建一个新T元素。

属性

名称 说明
Empty

返回一个空 ReadOnlySpan<T>

IsEmpty

返回一个值,该值指示当前只读范围为空。

Item[Int32]

从指定从零开始的索引处的只读范围获取项。

Length

只读范围中的项数。

方法

名称 说明
CastUp<TDerived>(ReadOnlySpan<TDerived>)

将只读范围 TDerived 强制转换为只读范围 T

CopyTo(Span<T>)

将此内容 ReadOnlySpan<T> 复制到目标 Span<T>中。

Equals(Object)
已过时.
已过时.

不支持。 引发 NotSupportedException

GetEnumerator()

返回此 ReadOnlySpan<T>枚举器。

GetHashCode()
已过时.

不支持。 引发 NotSupportedException

GetPinnableReference()

返回对可用于固定的 T 类型的对象的只读引用。

此方法旨在支持.NET编译器,不应由用户代码调用。

Slice(Int32, Int32)

形成从指定长度的指定索引处开始的当前只读范围的切片。

Slice(Int32)

形成从当前只读范围开始的切片,该范围从指定的索引处开始。

ToArray()

将此只读范围的内容复制到新的数组中。

ToString()

返回此 ReadOnlySpan<T>字符串表示形式。

TryCopyTo(Span<T>)

尝试将此 ReadOnlySpan<T> 内容复制到 a Span<T> 并返回一个值以指示操作是否成功。

运营商

名称 说明
Equality(ReadOnlySpan<T>, ReadOnlySpan<T>)

返回一个值,该值指示两 ReadOnlySpan<T> 个实例是否相等。

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

定义到 a. 的ArraySegment<T>ReadOnlySpan<T>隐式转换。

Implicit(T[] to ReadOnlySpan<T>)

定义数组到 <a0/> 的隐式转换。

Inequality(ReadOnlySpan<T>, ReadOnlySpan<T>)

返回一个值,该值指示两 ReadOnlySpan<T> 个实例是否不相等。

扩展方法

名称 说明
BinarySearch<T,TComparable>(ReadOnlySpan<T>, TComparable)

使用指定的ReadOnlySpan<T>泛型类型搜索整个排序TComparable的值。

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

使用指定的泛型类型搜索整个已 ReadOnlySpan<T> 排序的指定 TComparer 值。

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

使用指定的ReadOnlySpan<T>泛型接口搜索整个排序IComparable<T>的值。

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

确定之间spanother和之间共享的任何常见前缀的长度。

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

查找之间spanother和之间共享的任何常见前缀的长度。

Contains<T>(ReadOnlySpan<T>, T, IEqualityComparer<T>)

搜索指定的值,如果找到,则 true 返回。 如果未找到,则返回 false

Contains<T>(ReadOnlySpan<T>, T)

指示是否在只读跨度中找到指定的值。

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

搜索任何指定 values 项的任何匹配项,如果找到,则 true 返回。 如果未找到,则返回 false

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

搜索任何指定 values项的匹配项。

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

搜索任何指定 values项的匹配项。

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

搜索任一指定值的匹配项。

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

搜索指定范围中指定值的任何匹配项。

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

搜索指定范围或指定范围中的匹配项value0value1value2

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

搜索匹配项 value0value1

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

搜索指定范围中除指定 values值以外的任何值。

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

搜索指定范围中除指定 values值以外的任何值。

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

搜索指定范围中除指定 values值以外的任何值。

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

搜索指定范围中除其他任何值之外 value的任何值。

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

搜索除或 . 以外的value0value1任何值。

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

搜索除 /a0> 以外的任何值或

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

搜索除 /a0> 以外的任何值或

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

搜索指定范围中除其他值以外的value0任何值。value1

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

搜索指定范围中除指定 value值以外的任何值。

ContainsAnyExceptInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于和非独占范围内lowInclusivehighInclusive的任何值。

ContainsAnyInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于 lowInclusivehighInclusive(含)范围内的任何值。

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

计算指定 value 在 . span中发生的次数。

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

对发生的span次数value进行计数。

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

计算指定 value 在 . span中发生的次数。

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

计算指定 value 在 . span中发生的次数。

CountAny<T>(ReadOnlySpan<T>, ReadOnlySpan<T>, IEqualityComparer<T>)

计算任何指定 values 项在中 span发生的次数。

CountAny<T>(ReadOnlySpan<T>, ReadOnlySpan<T>)

计算任何指定 values 项在中 span发生的次数。

CountAny<T>(ReadOnlySpan<T>, SearchValues<T>)

计算任何指定 values 项在中 span发生的次数。

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

确定指定的序列是否出现在只读范围末尾。

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

确定指定的序列是否出现在只读范围末尾。

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

确定指定的值是否出现在范围末尾。

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

确定指定的值是否出现在范围末尾。

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

搜索指定的序列并返回其第一个匹配项的索引。

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

搜索指定的序列并返回其第一个匹配项的索引。

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

搜索指定的值并返回其第一个匹配项的索引。

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

搜索指定的值并返回其第一个匹配项的索引。

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

搜索任何指定值的第一个索引。

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

搜索任何指定值的第一个索引。

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

搜索任何指定值的第一个索引。

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

搜索任何指定值的第一个索引。

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

搜索任何指定值的第一个索引。

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

搜索任何指定值的第一个索引。

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

搜索任一指定值的第一个索引。

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

搜索指定值以外的 values任何值的第一个索引。

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

搜索指定值以外的 values任何值的第一个索引。

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

搜索指定值以外的 values任何值的第一个索引。

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

搜索指定值以外的 value任何值的第一个索引。

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

搜索除两个指定值以外的任何值的第一个索引。

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

搜索除任何值以外的 value0任何值的第一个索引, value1或者 value2

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

搜索除任何值以外的 value0任何值的第一个索引, value1或者 value2

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

搜索除两个指定值以外的任何值的第一个索引。

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

搜索指定值以外的 value任何值的第一个索引。

IndexOfAnyExceptInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于和非独占范围内lowInclusivehighInclusive的任何值的第一个索引。

IndexOfAnyInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于 lowInclusivehighInclusive非独占范围内任何值的第一个索引。

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

搜索指定的序列并返回其最后一个匹配项的索引。 如果未找到,则返回 -1。

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

搜索指定的序列并返回其最后一个匹配项的索引。

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

搜索指定的值并返回其最后一个匹配项的索引。 如果未找到,则返回 -1。

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

搜索指定的值并返回其最后一个匹配项的索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索任何指定值的最后一个索引。

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

搜索指定值以外的 values任何值的最后一个索引。

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

搜索指定值以外的 values任何值的最后一个索引。

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

搜索指定值以外的 values任何值的最后一个索引。

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

搜索指定值以外的 value任何值的最后一个索引。

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

搜索除指定value0value1值以外的任何值的最后一个索引。

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

搜索指定 value0值以外的任何值的最后一个索引, value1value2

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

搜索指定 value0值以外的任何值的最后一个索引, value1value2

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

搜索除指定value0value1值以外的任何值的最后一个索引。

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

搜索指定值以外的 value任何值的最后一个索引。

LastIndexOfAnyExceptInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于和非独占范围内lowInclusivehighInclusive的任何值的最后一个索引。

LastIndexOfAnyInRange<T>(ReadOnlySpan<T>, T, T)

搜索介于和highInclusive非独占范围内lowInclusive任何值的最后一个索引。

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

确定两个只读序列是否在内存中重叠,并输出元素偏移量。

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

确定两个只读序列是否在内存中重叠。

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

将所有匹配项替换为 的副本。

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

将所有匹配项替换为 的副本。

ReplaceAny<T>(ReadOnlySpan<T>, Span<T>, SearchValues<T>, T)

source destination复制到其中的任何元素valuesnewValue的所有匹配项。

ReplaceAnyExcept<T>(ReadOnlySpan<T>, Span<T>, SearchValues<T>, T)

source destination复制到其中的所有元素,并将除这些valuesnewValue元素以外的所有元素替换为 。

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

通过使用 IComparable{T} 比较元素来确定要比较的序列的相对顺序。CompareTo(T)。

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

通过使用 IComparable{T} 比较两个只读序列的相对顺序。CompareTo(T)。

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

通过使用一个比较元素来确定两个 IEqualityComparer<T>序列是否相等。

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

通过使用 IEquatable{T} 比较元素,确定两个只读序列是否相等。等于(T)。

Split<T>(ReadOnlySpan<T>, ReadOnlySpan<T>)

返回一种类型,该类型允许使用提供的分隔符跨度枚举拆分范围中的每个元素。

Split<T>(ReadOnlySpan<T>, T)

返回一种类型,该类型允许使用提供的分隔符枚举拆分范围中的每个元素。

SplitAny<T>(ReadOnlySpan<T>, ReadOnlySpan<T>)

返回一种类型,该类型允许使用任何提供的元素在拆分跨度内枚举每个元素。

SplitAny<T>(ReadOnlySpan<T>, SearchValues<T>)

返回一种类型,该类型允许使用提供的分隔符枚举拆分范围中的每个元素。

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

确定指定的序列是否出现在只读范围开始时。

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

确定指定的序列是否出现在只读范围开始时。

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

确定指定值是否出现在范围开头。

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

确定指定值是否出现在范围开头。

ToImmutableArray<T>(ReadOnlySpan<T>)

从指定元素生成不可变的内容数组。

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

从只读范围中移除一组在只读范围中指定的元素的所有前导和尾随匹配项。

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

从只读跨度中删除指定元素的所有前导和尾随匹配项。

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

从只读范围中删除在只读范围中指定的一组元素的所有尾随匹配项。

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

从只读范围中删除指定元素的所有尾随匹配项。

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

从范围中移除在只读跨度中指定的一组元素的所有前导事件。

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

从范围中删除指定元素的所有前导匹配项。

适用于

另请参阅