ReadOnlyTensorSpan<T> 结构

定义

ReadOnlyTensorSpan 表示任意内存的连续区域。 与数组不同,它可以指向托管内存或本机内存,也可以指向堆栈上分配的内存。 它是类型安全的和内存安全的。

generic <typename T>
public value class ReadOnlyTensorSpan
[System.Diagnostics.CodeAnalysis.Experimental("SYSLIB5001", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public readonly ref struct ReadOnlyTensorSpan<T>
[<System.Diagnostics.CodeAnalysis.Experimental("SYSLIB5001", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type ReadOnlyTensorSpan<'T> = struct
Public Structure ReadOnlyTensorSpan(Of T)

类型参数

T
继承
ReadOnlyTensorSpan<T>
属性

构造函数

ReadOnlyTensorSpan<T>(Array)

根据提供的 Array创建新的 ReadOnlyTensorSpan<T>。 新的 ReadOnlyTensorSpan<T> 的排名为 1,长度等于提供的 Array长度。

ReadOnlyTensorSpan<T>(Array, ReadOnlySpan<Int32>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的开始偏移量、长度和步幅在提供的 Array 上创建新的 ReadOnlyTensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

ReadOnlyTensorSpan<T>(Array, ReadOnlySpan<NIndex>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的开始偏移量、长度和步幅在提供的 Array 上创建新的 ReadOnlyTensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

ReadOnlyTensorSpan<T>(ReadOnlySpan<T>)

根据提供的 ReadOnlySpan<T>创建新的 ReadOnlyTensorSpan<T>。 新的 ReadOnlyTensorSpan<T> 的排名为 1,长度等于提供的 ReadOnlySpan<T>长度。

ReadOnlyTensorSpan<T>(ReadOnlySpan<T>, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

使用指定的长度和步幅在提供的 Span<T> 上创建新的 ReadOnlyTensorSpan<T>。 如果未提供步幅,将自动计算这些步幅。

ReadOnlyTensorSpan<T>(T*, IntPtr)

在目标非托管缓冲区上创建新的跨度。 显然,这是相当危险的长度没有检查。 但是,如果此创建正确,则所有后续使用都是正确的。

ReadOnlyTensorSpan<T>(T*, IntPtr, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

在目标非托管缓冲区上创建新的跨度。 显然,这是相当危险的,因为长度没有检查。 但是,如果此创建正确,则所有后续使用都是正确的。

ReadOnlyTensorSpan<T>(T[])

在目标数组的整个范围上创建新范围。

ReadOnlyTensorSpan<T>(T[], Index, ReadOnlySpan<IntPtr>, ReadOnlySpan<IntPtr>)

在从“start”索引开始并以“end”索引(独占)结尾的目标数组部分创建一个新的跨度。

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

在从“start”索引开始并以“end”索引(独占)结尾的目标数组部分创建一个新的跨度。

属性

Empty

返回一个长度为 0 的只读范围,其基为 null 指针。

FlattenedLength

范围中的项数。

IsEmpty

获取一个值,该值指示此 TensorSpan<T> 是否为空。

Item[ReadOnlySpan<IntPtr>]

返回对 ReadOnlyTensorSpan 的指定元素的引用。

Item[ReadOnlySpan<NIndex>]

返回对 ReadOnlyTensorSpan 的指定元素的引用。

Item[ReadOnlySpan<NRange>]

返回 ReadOnlyTensorSpan 的切片。

Lengths

获取此 TensorSpan<T>中每个维度的长度。

Rank

获取此 TensorSpan<T>的维度数,即排名。

Strides

获取此 TensorSpan<T> 的步幅

方法

CastUp<TDerived>(ReadOnlyTensorSpan<TDerived>)

TDerived 的只读范围强制转换为 T的只读范围。

CopyTo(TensorSpan<T>)

将此只读范围的内容复制到目标范围。 如果源和目标重叠,则此方法的行为就像覆盖目标之前临时位置的原始值一样。

Equals(Object)
已过时.

不支持此方法,因为无法装箱跨度。 若要比较两个范围,请使用 operator==。

FlattenTo(Span<T>)

将此范围的内容平展到提供的 Span<T>中。

GetEnumerator()

获取此范围的枚举器。

GetHashCode()
已过时.

不支持此方法,因为无法装箱跨度。

GetPinnableReference()

返回对 ReadOnlyTensorSpan 的第 0 个元素的引用。 如果 ReadOnlyTensorSpan 为空,则返回 null 引用。 它可用于固定,并且需要支持在固定语句中使用范围。

Slice(ReadOnlySpan<NIndex>)

返回对 TensorSpan 的指定元素的引用。

Slice(ReadOnlySpan<NRange>)

从给定范围形成切片

ToString()

返回一个 String,该 String 的类型和元素数。

TryCopyTo(TensorSpan<T>)

将此只读范围的内容复制到目标范围。 如果源和目标重叠,则此方法的行为就像覆盖目标之前临时位置的原始值一样。

TryFlattenTo(Span<T>)

将此范围的内容平展到提供的 Span<T>中。

运算符

Equality(ReadOnlyTensorSpan<T>, ReadOnlyTensorSpan<T>)

如果位于同一内存的左右点且长度相同,则返回 true。 请注意,这不会 检查 内容是否相等。

Implicit(T[] to ReadOnlyTensorSpan<T>)

ReadOnlyTensorSpan 表示任意内存的连续区域。 与数组不同,它可以指向托管内存或本机内存,也可以指向堆栈上分配的内存。 它是类型安全的和内存安全的。

Inequality(ReadOnlyTensorSpan<T>, ReadOnlyTensorSpan<T>)

如果位于同一内存的左右点且长度相同,则返回 false。 请注意,这不会 检查 内容是否相等。

扩展方法

BroadcastTo<T>(ReadOnlyTensorSpan<T>, TensorSpan<T>)

将数据从 source 广播到 destination

Reshape<T>(ReadOnlyTensorSpan<T>, ReadOnlySpan<IntPtr>)

tensor 张量重塑为指定的 lengths。 如果其中一个长度为 -1,则会自动计算该长度。 不会更改基础内存的长度,也不会分配新内存。 如果新形状与旧形状不兼容,则会引发异常。

SequenceEqual<T>(ReadOnlyTensorSpan<T>, ReadOnlyTensorSpan<T>)

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

Squeeze<T>(ReadOnlyTensorSpan<T>)

tensor中删除一个长度的所有维度。

SqueezeDimension<T>(ReadOnlyTensorSpan<T>, Int32)

从给定 dimensiontensor 中移除长度为 1 的轴。 如果维度不是长度,则会引发异常。

ToString<T>(ReadOnlyTensorSpan<T>, ReadOnlySpan<IntPtr>)

创建 ReadOnlyTensorSpan<T>String 表示形式。/>

TryBroadcastTo<T>(ReadOnlyTensorSpan<T>, TensorSpan<T>)

将数据从 tensor 广播到与 destination 兼容的最小可广播形状,并将其存储在 destination 如果形状不兼容,则返回 false。

Unsqueeze<T>(ReadOnlyTensorSpan<T>, Int32)

插入长度为 1 的新维度,该维度将显示在维度位置。

适用于