ReadOnlySpan<T> 结构

定义

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

generic <typename T>
public value class ReadOnlySpan
public readonly ref struct ReadOnlySpan<T>
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[])

在整个指定数组上创建新的 ReadOnlySpan<T>

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

从指定索引开始,创建包含数组的指定元素数的新 ReadOnlySpan<T>

ReadOnlySpan<T>(Void*, Int32)

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

属性

Empty

返回一个空 ReadOnlySpan<T>

IsEmpty

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

Item[Int32]

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

Length

只读范围中的项数。

方法

CopyTo(Span<T>)

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

Equals(Object)
已过时。
已过时。

不支持。 引发 NotSupportedException

GetEnumerator()

返回用于此 ReadOnlySpan<T> 的枚举器。

GetHashCode()
已过时。

不支持。 引发 NotSupportedException

GetPinnableReference()

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

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

Slice(Int32)

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

Slice(Int32, Int32)

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

ToArray()

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

ToString()

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

TryCopyTo(Span<T>)

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

运算符

Equality(ReadOnlySpan<T>, ReadOnlySpan<T>)

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

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

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

Implicit(T[] to ReadOnlySpan<T>)

定义数组到 ReadOnlySpan<T> 的隐式转换。

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

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

扩展方法

ToImmutableArray<T>(ReadOnlySpan<T>)

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

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

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

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

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

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

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

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

指示是否在只读跨度内找到指定的值。 使用 IEquatable{T}.Equals(T) 比较各值。

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

确定指定的序列是否出现在只读跨度的结尾。

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

搜索指定值并返回其第一次出现的索引。 使用 IEquatable{T}.Equals(T) 比较各值。

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

搜索指定的序列并返回其第一次出现的索引。 使用 IEquatable{T}.Equals(T) 比较各值。

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

搜索任何指定值的第一个索引,其方式类似于使用逻辑 OR 运算符多次调用 IndexOf。

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

搜索任何指定值的第一个索引,其方式类似于使用逻辑 OR 运算符多次调用 IndexOf。

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

搜索任何指定值的第一个索引,其方式类似于使用逻辑 OR 运算符多次调用 IndexOf。

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

搜索指定值并返回其最后一次出现的索引。 使用 IEquatable{T}.Equals(T) 比较各值。

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

搜索指定的序列并返回其最后一次出现的索引。 使用 IEquatable{T}.Equals(T) 比较各值。

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

搜索任何指定值的最后一个索引,其方式类似于使用逻辑 OR 运算符多次调用 LastIndexOf。

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

搜索任何指定值的最后一个索引,其方式类似于使用逻辑 OR 运算符多次调用 LastIndexOf。

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

搜索任何指定值的最后一个索引,其方式类似于使用逻辑 OR 运算符多次调用 LastIndexOf。

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

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

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

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

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

通过使用 IComparable{T}.CompareTo(T) 比较它们的元素,确定两个只读序列的相对顺序。

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

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

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

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

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

确定指定的序列是否出现在只读跨度的开头。

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

删除只读跨度中的指定元素的所有前导和尾随出现次数。

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

从只读跨度中删除在只读跨度中指定的一组元素的所有前导和尾随出现次数。

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

删除只读跨度中的指定元素的所有尾随出现次数。

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

从只读跨度中删除在只读跨度中指定的一组元素的所有尾随出现次数。

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

删除跨度中的指定元素的所有前导出现次数。

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

从跨度中删除在只读跨度中指定的一组元素的所有前导出现次数。

适用于

另请参阅