Unsafe.Subtract 方法

定义

重载

Subtract<T>(Void*, Int32)

从给定的非托管指针中减去元素偏移量。

Subtract<T>(T, Int32)

从给定的托管指针中减去偏移量。

Subtract<T>(T, IntPtr)

从给定的托管指针中减去元素偏移量。

Subtract<T>(T, UIntPtr)

从给定的托管指针中减去元素偏移量。

Subtract<T>(Void*, Int32)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

重要

此 API 不符合 CLS。

从给定的非托管指针中减去元素偏移量。

public:
generic <typename T>
 static void* Subtract(void* source, int elementOffset);
public static void* Subtract<T> (void* source, int elementOffset);
[System.CLSCompliant(false)]
public static void* Subtract<T> (void* source, int elementOffset);
static member Subtract : nativeptr<unit> * int -> nativeptr<unit>
[<System.CLSCompliant(false)>]
static member Subtract : nativeptr<unit> * int -> nativeptr<unit>

类型参数

T

其大小将用作 的缩放因子的类型 elementOffset

参数

source
Void*

要从中减去偏移量的非托管指针。

elementOffset
Int32

要减去的偏移量。

返回

Void*

一个新的非托管指针,反映从源指针减去指定偏移量。

属性

注解

参数elementOffset是要从source指针中删除) T (大小元素的数目,而不是字节数。 例如,给定源指针 ptr,调用 Unsafe.Subtract<int>(ptr, 20) 将返回一个新指针,其地址点为 80 字节 (= 20 个元素 * 4 个字节,每个元素) ptr 之前。

如果 elementOffset 是计算值而不是硬编码文本,则调用方应考虑整数溢出的可能性。 例如,在调用 Unsafe.Subtract<int>(ptr, a * b)中,调用方必须确保中间值 a * b 不会溢出 的 Int32边界。

适用于

Subtract<T>(T, Int32)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

从给定的托管指针中减去偏移量。

public:
generic <typename T>
 static T % Subtract(T % source, int elementOffset);
public static ref T Subtract<T> (ref T source, int elementOffset);
static member Subtract : 'T * int -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As Integer) As T

类型参数

T

托管指针的元素类型。

参数

source
T

要从中减去偏移量的托管指针。

elementOffset
Int32

要减去的偏移量。

返回

T

一个新的托管指针,反映从源指针减去指定偏移量。

注解

参数elementOffset是要从source指针中减去) T (而不是字节数。 例如,给定类型ref int为 的源指针 ptr,调用Unsafe.Subtract<int>(ref ptr, 20)将返回一个新指针,其地址点为 80 字节 (= 20 个元素 * 4 个字节,每个元素) ptr 之前。

如果 elementOffset 是计算值而不是硬编码文本,则调用方应考虑整数溢出的可能性。 例如,在调用 Unsafe.Subtract<int>(ref ptr, a * b)中,调用方必须确保中间值 a * b 不会溢出 的 Int32边界。

适用于

Subtract<T>(T, IntPtr)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

从给定的托管指针中减去元素偏移量。

public:
generic <typename T>
 static T % Subtract(T % source, IntPtr elementOffset);
public static ref T Subtract<T> (ref T source, IntPtr elementOffset);
static member Subtract : 'T * nativeint -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As IntPtr) As T

类型参数

T

托管指针的元素类型。

参数

source
T

要从中减去偏移量的托管指针。

elementOffset
IntPtr

nativeint

要减去的偏移量。

返回

T

一个新的托管指针,反映从源指针减去指定偏移量。

注解

参数elementOffset是要从source指针中减去) T (而不是字节数。 例如,给定类型ref int为 的源指针 ptr,调用Unsafe.Subtract<int>(ref ptr, (nint)20)将返回一个新指针,其地址点为 80 字节 (= 20 个元素 * 4 个字节,每个元素) ptr 之前。

如果 elementOffset 是计算值而不是硬编码文本,则调用方应考虑整数溢出的可能性。 例如,在调用 Unsafe.Subtract<int>(ref ptr, a * b)中,调用方必须确保中间值 a * b 不会溢出 的 IntPtr边界。

适用于

Subtract<T>(T, UIntPtr)

Source:
Unsafe.cs
Source:
Unsafe.cs
Source:
Unsafe.cs

重要

此 API 不符合 CLS。

从给定的托管指针中减去元素偏移量。

public:
generic <typename T>
 static T % Subtract(T % source, UIntPtr elementOffset);
public static ref T Subtract<T> (ref T source, nuint elementOffset);
[System.CLSCompliant(false)]
public static ref T Subtract<T> (ref T source, UIntPtr elementOffset);
static member Subtract : 'T * unativeint -> 'T
[<System.CLSCompliant(false)>]
static member Subtract : 'T * unativeint -> 'T
Public Shared Function Subtract(Of T) (ByRef source As T, elementOffset As UIntPtr) As T

类型参数

T

托管指针的元素类型。

参数

source
T

要从中减去偏移量的托管指针。

elementOffset
UIntPtr

nuint

unativeint

要减去的偏移量。

返回

T

一个新的托管指针,反映从源指针减去指定偏移量。

属性

注解

参数elementOffset是要从source指针中减去) T (而不是字节数。 例如,给定类型ref int为 的源指针 ptr,调用Unsafe.Subtract<int>(ref ptr, (nuint)20)将返回一个新指针,其地址点为 80 字节 (= 20 个元素 * 4 个字节,每个元素) ptr 之前。

如果 elementOffset 是计算值而不是硬编码文本,则调用方应考虑整数溢出的可能性。 例如,在调用 Unsafe.Subtract<int>(ref ptr, a * b)中,调用方必须确保中间值 a * b 不会溢出 的 UIntPtr边界。

适用于