Unsafe.Subtract 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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
要减去的偏移量。
返回
一个新的非托管指针,反映从源指针减去指定偏移量。
- 属性
注解
参数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
要减去的偏移量。
返回
一个新的托管指针,反映从源指针减去指定偏移量。
注解
参数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
要减去的偏移量。
返回
一个新的托管指针,反映从源指针减去指定偏移量。
注解
参数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
要减去的偏移量。
返回
一个新的托管指针,反映从源指针减去指定偏移量。
- 属性
注解
参数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
边界。